有没有人为自己使用现有的 node.js REPL设置类似的东西?我没有想到一个快速的方法来做到这一点。node.js - 评估现场流程
我今天做的方式是使用emacs和这样的: https://github.com/ivan4th/swank-js
此模块组成:
粘液-JS插件emacs的,它与JS2型组合,让 只需在一个函数体发出CMx的地方定义 - 和 关进函数的字符串到..
斯旺克-JS服务器(是的,你ç写在Node.js的乌尔德EVAL从本地机器 直接向远程进程) - 它接收 字符串你eval'ed的功能,实际上它evals
一个整体的一部分,可以让你连接到另一该服务器 与您的浏览器上的端口,然后让你操纵上的浏览器 的DOM(这是相当惊人的,但不相关)
我的解决方案使用的emacs的侧煤泥JS和我需要(” swank- js')on my app.js文件
现在..我有几个问题和关于我的解决方案或 其他可能的问题:
问题1:这是否过分吗?有人有一个秘密的方式来评估从纳米到他的现场流程的东西 ?
Q2:我不得不改变方式斯旺克-JS是EVALing ..它使用了一些 样的魔法是这样的:
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");
其中,据我了解,只是复制了全局变量 新的上下文,并在eval,不会改变原来的功能 的定义 - SOOO ..我只是使用普通的“eval”和IT WORKS。
您对此有任何意见吗?
Q3:为了重新评估一个函数,它需要是一个GLOBAL函数 - 将所有函数定义全局化(clojure-like)是否是不好的做法?你认为有另一种方法可以做到这一点吗?
,我很感兴趣这个问题也是如此..我怀疑玩弄那里的黑魔法可能会提供一些答案。我知道我今天要做什么! –