node.js - 评估实时进程

标签 node.js eval read-eval-print-loop swank commonjs

是否有人使用现有的为自己设置了类似的东西 node.js REPL?我没有想到一个快速的方法。

我今天的做法是使用 emacs 和这个: https://github.com/ivan4th/swank-js

该模块由以下部分组成:

  1. emacs 的 SLIME-js 插件,结合 js2-mode,让 您只需在函数 def 的某处发出 C-M-x - 并且 off 将函数的字符串转到 ..

  2. Swank-js 服务器(是的,您可以从本地计算机进行评估 直接到远程进程)用 Node.js 编写 - 它接收 您评估并实际评估的函数的字符串

  3. 让您连接到该服务器上另一个端口的整个部分 使用您的浏览器,然后让您在该浏览器上操作 DOM (这很神奇但不相关)

我的解决方案在 emacs 端使用 SLIME-js 并且我需要('swank- js') 在我的 app.js 文件中

现在..我有几个关于我的解决方案或 其他可能的:

Q1:这是不是太过分了?有人有 secret 的方法来评估东西吗 从 nano 到他的直播过程?

Q2:我不得不改变 swank-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");

据我所知,它只是将全局变量复制到 新的上下文,在评估时,不会改变原来的功能 定义 - SOOO ..我只是使用简单的“eval”和它 工作。

您对此有什么意见吗?

Q3:为了重新评估一个函数,它需要是一个 GLOBAL 函数 - 将所有函数定义都设为全局(类似clojure)是不好的做法吗?您认为还有其他方法可以做到这一点吗?

最佳答案

实际上,swank.js 变得更好了,现在使用 NPM 在您的项目中设置 swank js 变得更加容易。我现在正在编写文档,但功能已经存在!

关于node.js - 评估实时进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4847103/

相关文章:

node.js - 如何从 node.js 作为单独的进程启动 Chrome 并立即返回?

node.js - 获取http ://localhost:8080/socket. io/?EIO=3&transport=polling&t=McNiz_D 404(未找到)

python - 为什么此字符串不适用于 ast.literal_eval

c# - 如何在 Windows 中运行 Visual Studio C# 交互式脚本?

swift - "xcrun swift"用于结果的方法/属性是什么?

node.js - module.exports=require ('other' ) 和临时变量有什么区别?

javascript - Sequelize.js node.js 多对多关联

javascript - 我需要评估吗?

java - 异常:"attempt to access org.rosuda.REngine.REXPGenericVector as String"

Java 和 MySQL 控制台 REPL