Tag: read eval print loop

如何暂停节点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 […]

在Emacs中用JS-comint使用Node.js

我使用Emacs 24.2。 我已经从MELPA安装js-comint和js-mode ,执行run-js ,现在在REPL而不是> sign我有这个乱码: ^[[1G> ^[[0K^[[3G REPL本身在Inferior Javascript模式下工作得很好,只是>符号被改变了。 如果input未完成的expression式,它甚至会打印^[[1G… ^[[0K^[[5G 。 ^[是系统字符,不复制复制粘贴,我添加它们让你有一个想法。 在我的init文件中: (require 'js-comint) (setq inferior-js-program-command "nodejs") 在terminal调用nodejs产生工作REPL。 为什么要以这种方式行事? 我该怎么做才能纠正这个问题?

清除Node.js readlineshell中的terminal窗口

我有一个用Coffeescript编写的简单的readline shell: rl = require 'readline' cli = rl.createInterface process.stdin, process.stdout, null cli.setPrompt "hello> " cli.on 'line', (line) -> console.log line cli.prompt() cli.prompt() 运行这将显示一个提示: $ coffee cli.coffee hello> 我希望能够Ctrl-L清除屏幕。 这可能吗? 我也注意到,我无法在节点或咖啡 REPL中Ctrl-L 。 我在Ubuntu 11.04上运行。

meteor是否有REPL?

Meteor框架是否带有REPL或某种控制台? 如果不是的话,有没有想法如何使用Node.js REPL来引导Meteor环境? 我基本上是在寻找像rails控制台,或在Web浏览器的JavaScript控制台:一个命令行界面,使应用程序的完整上下文可用,所以我可以任意检查像Meteor和Template对象。

node.js – 评估一个现场stream程

有没有人使用现有的node.js REPL为自己设置了这样的东西? 我没有想到一个快速的方法来做到这一点。 我今天做的方式是使用emacs和这个: https : //github.com/ivan4th/swank-js 该模块由以下部分组成: 一个SLIME-js插件到emacs,与js2-mode结合使用,你可以简单地在一个函数def的主体中的某个地方发出一个CMx,然后closures该函数的string到.. Swank-js服务器(是的,你可以从本地机器上直接调用远程进程)写在Node.js中 – 它接收你所评估函数的string, 整个部分可以让你使用BROWSER连接到该服务器上的另一个端口,然后让你在该浏览器上操作DOM(这是相当了不起但不相关) 我的解决scheme在emacs一侧使用SLIME-js,我需要('swank-js')在我的app.js文件 现在..我有几个问题和关于我的解决scheme或其他可能的问题: Q1:这是否过分了? 有人有一个秘密的方法来评估纳米到他的生活过程中的东西? 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"); 据我所知,它只是将全局variables复制到新的上下文中,并且在eval时不会更改原始函数定义 – SOOO ..我只是使用简单的“eval”和IT WORKS。 […]

什么是在JavaScript的“REPL”?

我看到了创build“REPL”的参考。 什么是REPL? var arDrone = require('ar-drone'); var client = arDrone.createClient(); client.createRepl();

如何在Node REPL中编写多行代码

我想评估 var foo = "foo"; console.log(foo); 作为一个块,而不是逐行评估 var foo = "foo"; undefined console.log(foo); foo undefined 有一种简单的方法将提示移到下一行吗?