Qualcuno ha impostato qualcosa del genere per se stesso utilizzando il REPL nodo esistente? Non ho pensato a un modo veloce per farlo.node.js - evaling a un processo in tempo reale
Il modo in cui lo faccio oggi è usando emacs e questo: https://github.com/ivan4th/swank-js
Questo modulo è composto da:
una melma-js addon per emacs, che, in combinazione con js2-mode , consente è sufficiente emettere un CMx qualche parte nel corpo di una funzione def - e fuori va stringa della funzione al ..
server diSwank-js (sì, c Ould eval dal locale macchina direttamente a un processo remoto) scritto in Node.js - Riceve la stringa della funzione che si eval'ed e in realtà è evals
tutta una parte che consente di connettersi a un altro porta su quel server con il browser e quindi consente di manipolare il DOM su quel browser (che è piuttosto sorprendente, ma non rilevante)
mia soluzione utilizza SLIME-js sul lato Emacs e ho bisogno di (' swank- js ') sul mio file app.js
Ora .. Ho diversi problemi e domande riguardanti la mia soluzione o altre possibili:
Q1: È questo strafare? Qualcuno ha un modo segreto per valutare le cose da nano nel suo processo live?
Q2: ho dovuto cambiare il modo in cui Swank-JS è EVALing .. è usato qualche sorta di magia nera in questo modo:
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");
che
, per quanto ho capito, solo copia le variabili globali per il nuovo contesto , e dopo l'eval, non modifica la funzione originale definizioni - SOOO .. Sto semplicemente usando "eval" semplice e IT FUNZIONA.
Avete commenti in merito?
Q3: Al fine di rivalutare una funzione, deve essere una funzione GLOBALE - È una cattiva pratica avere tutte le definizioni di funzione come globali (tipo clojure)? Pensi che ci sia un altro modo per farlo?
In realtà, io sono molto interessato a anche questa domanda ... sospetto che giocare con la magia nera possa far pensare ad alcune risposte. So cosa farò oggi! –