与节点REPL中的应用程序代码进行交互

Rails之类的框架的乐趣之一就是能够在命令行上与模型进行交互。 作为node.js的新手,我常常发现自己将大量的应用程序代码粘贴到REPL中以便与对象一起玩。 这个不干净。

是否有更有经验的节点开发人员使用从node提示中访问其特定于应用程序的东西的魔力? 一个解决scheme是将整个应用程序或应用程序的一部分打包到require()模块中require() d? 我仍然生活在一个单一的大陆里,所以把所有东西都拿出来是不可避免的,有点令人生畏。

预先感谢您提供的任何有用的提示!

一个大的文件土地实际上是一个你想要做的事情的好地方。 Nodejs也可以在代码中require它的REPL,这样可以节省你的复制和粘贴。

这是我的一个项目的一个简单的例子。 靠近你的文件的顶部做类似这样的事情:

 function _cb() { console.log(arguments) } var repl = require("repl"); var context = repl.start("$ ").context; context.cb = _cb; 

现在只需在代码中添加上下文。 _cb是一个虚拟的callback函数调用需要一个(看看他们会返回)。

好像REPL API已经改变了很多,这段代码适合我:

  var replServer = repl.start({ prompt: "node > ", input: process.stdin, output: process.stdout, useGlobal: true }); replServer.on('exit', function() { console.log("REPL DONE"); }); 

你也可以看看这个答案https://stackoverflow.com/a/27536499/1936097 。 如果文件直接从节点运行,并且自动将所有已声明的方法和variables添加到上下文,则此代码将自动加载REPL。