当前位置:  开发笔记 > 编程语言 > 正文

JavaScript交互式shell完成

如何解决《JavaScript交互式shell完成》经验,为你挑选了3个好方法。

对于调试和测试,我正在搜索具有自动完成功能的JavaScript shell,如果可能的话,还会搜索对象内省(如ipython).在线JavaScript Shell非常好,但我正在寻找一些本地的东西,而不需要浏览器.

到目前为止,我已经测试了独立的JavaScript解释器rhino,spidermonkey和google V8.但他们都没有完成.至少带有jline和spidermonkey的Rhino通过键向上/向下具有某种命令历史,但仅此而已.

有什么建议?

这个问题在这里再次被问到.它可能包含您正在寻找的答案.



1> Martin Lazar..:

自1.7R2以来,Rhino Shell也支持完成.您可以在此处找到更多信息.



2> Cheeso..:

在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();

如果需要,可以使用.wsf文件扩充其他实用程序库.将上面的内容保存到"shell.js",并将以下内容保存到"shell.wsf":


    
    




















    
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有