Czy ktoś skonfigurował coś takiego dla siebie używając istniejącego node.js REPL? Nie myślałem o szybkiej drodze, żeby to zrobić.node.js - eval'ing do procesu na żywo
Sposób, w jaki to zrobić dzisiaj jest za pomocą Emacsa i to: https://github.com/ivan4th/swank-js
Moduł ten składa się z:
a slime-js dodatek do emacs, które w połączeniu z JS2 trybie , pozwala wystarczy wydać CMX gdzieś w ciele funkcji def - i off idzie string funkcja jest do ..
serwerSwank-js (tak, ty c Ould eval z lokalnego automatyczna bezpośrednio do zdalnego procesu) napisany w node.js - Odbiera ciąg funkcji, którą eval'ed i faktycznie evals go
Cała część, która pozwala połączyć się z innym port na tym serwerze za pomocą przeglądarki, a następnie pozwala manipulować DOM na tej przeglądarce (co jest dość niesamowite, ale nie ma znaczenia)
Moje rozwiązanie wykorzystuje mułu js po stronie emacs i ja require (” swank- js) na moim pliku app.js
Teraz .. Mam kilka problemów i pytań dotyczących mojego rozwiązania lub innych możliwych:
Pytanie 1: Czy to przesada? Czy ktoś ma tajny sposób na zarabianie na rzeczy z nano na jego żywo?
Q2: Musiałem zmienić sposób Swank-js jest EVALing .. kiedyś jakiś rodzaj czarnej magii tak:
var Script = process.binding('evals').Script;
var evalcx = Script.runInContext;
....
this.context = Script.createContext();
for (var i in global) this.context[i] = global[i];
this.context.module = module;
this.context.require = require;
...
r = evalcx("CODECODE", this.context, "repl");
które, o ile rozumiem, tylko kopie do zmiennych globalnych nowy kontekst, a po eval, nie zmienia oryginalnej funkcji - SOOO .. Używam tylko prostych "eval" i IT WORKS.
Czy masz jakieś uwagi dotyczące tego?
Q3: Aby ponownie sprawdzić funkcję, musi ona być funkcją GLOBALNĄ - Czy źle jest mieć wszystkie definicje funkcji jako globalne (podobne do clojure)? Czy myślisz, że jest inny sposób na zrobienie tego?
Właściwie jestem bardzo zainteresowany to też pytanie. Podejrzewam, że bawienie się czarną magią może dawać pewne odpowiedzi. Wiem, co zrobię dzisiaj! –