Articles of read eval print loop

是使用vim-key-binding启用node.js REPLterminal颜色的一种方法吗?

在terminal中运行node将使您进入其REPL模式,语法突出显示(例如,数字是黄色的,而string是绿色的)。 但是,我不熟悉它的默认emacs键绑定,所以我遵循一些build议: alias node='env NODE_NO_READLINE=1 rlwrap node' 这个工作很好,我得到vim键绑定,但语法高亮是禁用的。 所以我再试一次: alias node='rlwrap -a node' 这次我得到了vim-key-binding和syntax highlighter两种工作方式,但是当我将其input到REPL模式时,会出现一些bug: > [1,2,3] 输出是正确的(使用语法高亮显示) [ 1, 2, 3, 4 ] 但从上面的input行已经改变 > [1,[1,2,3] 这个bug比没有语法高亮更烦人。 任何想法,使这两件事情一起工作好吗? PS我不需要tab-compilation(至less在这个时候)。

在Emacs的nodejs模式下得到垃圾提示

我在Emacs 24上使用nodejs-mode ,但是当我input: Mx nodejs 它提示垃圾提示像[0J> ,现在即使我已经在下面添加了 (setq ansi-color-for-comint-mode t) 在emacs文件中。 它仍然不起作用。 所有相同的,如果我在Emacs shell-mode上键入node目录,那么我会得到一个更恼人的提示,如下所示: ryu@ryu:~$ node [1G[0J> [3G 有没有人知道为什么这样做?

是否有像Nodey的iPython的REPL?

是否有任何“repl +额外function”(如显示文档,模块自动重新加载等)的孩子,像iPython,但对于Nodejs? 我的意思是在本地和离线运行的东西。 这是必须的。 最好在terminal模式下工作,并在顶部有一个可选的更好的GUI(如iPython + iPythonQT / Jupyter-qtconsole)。 标准的Nodejs repl是可用的,但它具有可怕的可用性(点击向上箭头循环,而不是通过多行命令的repl hisoty,正如你所期望的任何理智的repl工作,交互式地尝试类的声明),而且是非常秃头的。 每当我从iPython切换到这是痛苦的。 一个类似Chrome浏览器的repl,你也可以通过启动一个node-inspectordebugging会话来运行节点,这样更加实用…但也太麻烦了。

节点js与shell应用程序交互

网上有很多关于如何产生一个subprocess的节点js例子,然后把结果作为一个string来处理。 但… 我想与孩subprocess“互动”。 例如,我将如何编写节点js应用程序,而不是通过调用“ python ”开始,然后在继续input另一个任意语句“ 4+4 ”之前键入语句“ 1+1 ”,让我捕获结果“ 2 ” ? (通过“types”我假设它将需要stream数据到该进程使用的标准input)。

Node.js:挂钩repl到远程节点服务器

假设我有一个在mysite.com上运行的节点服务器。 有没有办法设置该服务器,以便我可以使用节点的repl API从我的本地机器安全地连接到它?

如何在NodeJS应用程序的服务器端使用JavaScript库,以便在客户端上运行?

我正在深入NodeJS和Express(对我来说太复杂了)来构build一个实时的Web应用程序。 目前,我正在尝试了解如何在服务器端使用现有的JavaScript库。 问题在于库似乎devise为在客户端运行,因此,这些指令仅向您显示如何在客户端使用它。 我在说的图书馆可以在这里find… https://github.com/replit/jsrepl 问题: 由于一个NodeJS的Web应用程序是build立在JavaScript,是否公平地说,我可以在服务器端运行任何非GUI JavaScript库? 任何人都可以提供一些关于如何将jsrepl库添加到我的Express 3.0应用程序中的一些指导,使我可以像在客户端使用浏览器一样使用它。 我必须修改jsrepl代码并添加“exports”。 到我想要使用的方法? 意思,在服务器端,我可以执行下面的代码… var jsrepl = new JSREPL({ input: inputCallback, output: outputCallback, result: resultCallback, error: errorCallback, progress: progressCallback, timeout: { time: 30000, callback: timeoutCallback } }); 提前感谢您的智慧! 我正在尽力理解这一切。

在Node.js REPL中,为什么会发生这种情况?

所以当我发现一些非常奇怪的东西时,我正在玩Node.js REPL和Underscore库。 如果我require("underscore") ,variables_被全局设置(显然)。 然后,当我试图运行一个简单的命令,如console.log(_.isEmpty)它打印[Function] (显然,再次)。 但是,在_.isEmpty运行console.log(_)后,它会打印[Function]因为variables_被设置为_.isEmpty 。 为什么这样做呢? 如果我从一个js文件运行相同的代码,这不会发生。 这是一个正常的节点事情还是这是一个总的错误? 仅供参考:节点v.10.10.10

使用vim keybindings和方法/variables完成的Node.js REPL

据我所知,在Node REPL中获得vim keybindings的标准方法是像这样使用rlwrap : NODE_NO_READLINE=1 rlwrap node 然而,这杀死了方法和variablestab-completion。 有一些解决方法吗?

防止打印输出的Node.js repl

如果一些JavaScript计算的结果是一个10000个元素的数组,Node.js repl会打印出来。 我如何防止这样做? 谢谢

如何暂停节点REPL并在所有环境保留的后期恢复?

我希望暂停REPL会话,这样我可以closures系统,然后再继续在REPL会话上工作,就好像我永远不会closures系统一样,即不会丢失所有的环境。 我认为可能的解决scheme是这样的 快照内存,保存到文件并在以后从文件加载env :我认为这将是最好的解决scheme,就像使用Windows的“hibernate”function时发生的那样。 我发现这个heapdump实用程序是为了获取内存快照来分析内存泄漏,但我不知道是否可以从该快照中重新生成整个环境,而且我也没有发现这样做的工具。 保存命令并重放它们 :这个方法的一个主要缺点是它适用于像var x = "Hello World";这样简单的东西var x = "Hello World"; ,它不适用于var reciptId = bankAccount.makePayment(1000); 因为它将重复每个重播操作,而不是保存原始函数调用的细节。 序列化/反序列化整个环境 :这将包括列出环境中存在的所有对象,然后build立一个机制,将它们中的每一个写入一个文件,即将它们序列化,然后build立一个反序列化机制并加载它们在需要的时候。 我还没有看到一个干净的方式来序列化和反序列化JSvariables没有限制。 我认为这种方法的主要限制是它无法保留引用,所以对象松散他们的类,事情将不得不被重复序列化,并失去其反序列化的平等 – 例如var f = function (x) {…}; var a = {}; af = f; af === f? //is true, not true if your serialization mechanism saves a function defn for f […]