带补全的JavaScript交互式shell
为了进行调试和测试,我正在搜索一个自动完成的JavaScript shell,如果可能的话还包括对象内省(比如ipython)。网上真的很不错,但我正在寻找一些本地的东西,不需要浏览器 到目前为止,我已经测试了独立的JavaScript解释器rhino、spidermonkey和google V8。但它们都没有完成。至少带有jline和spidermonkey的Rhino通过上/下键具有某种命令历史记录,但仅此而已 有什么建议吗带补全的JavaScript交互式shell,javascript,Javascript,为了进行调试和测试,我正在搜索一个自动完成的JavaScript shell,如果可能的话还包括对象内省(比如ipython)。网上真的很不错,但我正在寻找一些本地的东西,不需要浏览器 到目前为止,我已经测试了独立的JavaScript解释器rhino、spidermonkey和google V8。但它们都没有完成。至少带有jline和spidermonkey的Rhino通过上/下键具有某种命令历史记录,但仅此而已 有什么建议吗 这个问题又被问到了。它可能包含您正在寻找的答案。不是您正在寻找的答
这个问题又被问到了。它可能包含您正在寻找的答案。不是您正在寻找的答案。作者John Resig说,有用于和的外壳。我不确定他们是否有自动完成功能。Rhino Shell因为1.7R2也支持完成功能。您可以找到更多信息。在Windows中,您可以从cscript.exe中的命令提示符运行此文件,它提供了一个简单的交互式shell。没有完成
// shell.js
// ------------------------------------------------------------------
//
// implements an interactive javascript shell.
//
// from
// http://kobyk.wordpress.com/2007/09/14/a-jscript-interactive-interpreter-shell-for-the-windows-script-host/
//
// Sat Nov 28 00:09:55 2009
//
var GSHELL = (function () {
var numberToHexString = function (n) {
if (n >= 0) {
return n.toString(16);
} else {
n += 0x100000000;
return n.toString(16);
}
};
var line, scriptText, previousLine, result;
return function() {
while(true) {
WScript.StdOut.Write("js> ");
if (WScript.StdIn.AtEndOfStream) {
WScript.Echo("Bye.");
break;
}
line = WScript.StdIn.ReadLine();
scriptText = line + "\n";
if (line === "") {
WScript.Echo(
"Enter two consecutive blank lines to terminate multi-line input.");
do {
if (WScript.StdIn.AtEndOfStream) {
break;
}
previousLine = line;
line = WScript.StdIn.ReadLine();
line += "\n";
scriptText += line;
} while(previousLine != "\n" || line != "\n");
}
try {
result = eval(scriptText);
} catch (error) {
WScript.Echo("0x" + numberToHexString(error.number) + " " + error.name + ": " +
error.message);
}
if (result) {
try {
WScript.Echo(result);
} catch (error) {
WScript.Echo("<<>>");
}
}
result = null;
}
};
})();
GSHELL();
…然后从命令行运行shell.wsf 编辑:在多使用一点节点REPL之后,我发现这个评估过于积极。它的实现存在一些严重的问题,包括无法拖动已删除的文本、编辑长度超过终端宽度的行的问题,以及其他一些问题。使用rhino可能更好 (
node repl
在安装了节点的系统上)是迄今为止我见过的最好的基于终端的系统上下文shell。我把它比作rhino和内置v8引擎外壳。它提供了选项卡完成和行编辑历史记录,以及计算的语法着色。您还可以导入模块,或者至少导入由节点实现的那些模块
缺点是您必须构建节点。正如构建应用程序一样,这不是一个大问题,但如果您通常不做这些事情,这可能是一个挑战。(一个独立的javascript运行时)也可以用于此目的
<job>
<reference object="Scripting.FileSystemObject" />
<script language="JavaScript" src="util.js" />
<script language="JavaScript" src="shell.js" />
</job>
var quit = function(x) { WScript.Quit(x);}
var say = function(s) { WScript.Echo(s); };
var echo = say;
var exit = quit;
var sleep = function(n) { WScript.Sleep(n*1000); };