JavaScript интерактивная оболочка с завершением - PullRequest
31 голосов
/ 03 сентября 2008

Для отладки и тестирования я ищу оболочку JavaScript с автоматическим завершением и, если возможно, самоанализом объекта (например, ipython). Онлайн JavaScript Shell действительно хорош, но я ищу что-то локальное, без необходимости в браузере.

До сих пор я тестировал автономный интерпретатор JavaScript Rhino, Spidermonkey и Google V8. Но ни у одного из них нет завершения. По крайней мере, Rhino с jline и spidermonkey имеют некоторую историю команд с помощью клавиш вверх / вниз, но не более того.

Есть предложения?

Этот вопрос был задан снова здесь . Он может содержать ответ, который вы ищете.

Ответы [ 6 ]

19 голосов
/ 14 апреля 2009

Rhino Shell, начиная с 1.7R2, также имеет поддержку для завершения. Вы можете найти больше информации здесь .

5 голосов
/ 02 ноября 2010

edit : после использования узла REPL немного больше, я обнаружил, что эта оценка слишком позитивна. Существуют некоторые серьезные проблемы с его реализацией, в том числе невозможность восстановления уничтоженного текста, проблемы с редактированием строк, длина которых превышает ширину терминала, и некоторые другие проблемы. Может быть, лучше просто использовать носорога.

node.js REPL (node-repl в системе с установленным узлом) - лучшая основанная на терминале оболочка системного контекста, которую я когда-либо видел. Я сравниваю это с носорогом и встроенной оболочкой v8. Это обеспечивает завершение табуляции и историю редактирования строк, а также синтаксическую раскраску оценок. Вы также можете импортировать CommonJS модули или, по крайней мере, те модули, которые реализованы узлом.

Недостатком является то, что вы должны построить узел. Это не так уж сложно, так как создание приложений идет, но может быть проблемой, если вы обычно не делаете такие вещи.

5 голосов
/ 28 ноября 2009

В Windows вы можете запустить этот файл из командной строки в cscript.exe, и он предоставляет простую интерактивную оболочку. Без завершения.

// 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":

<job>
    <reference object="Scripting.FileSystemObject" />
    <script language="JavaScript" src="util.js" />
    <script language="JavaScript" src="shell.js" />
</job>

... где util.js:

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); };

... и затем запустите shell.wsf из командной строки.

2 голосов
/ 03 сентября 2008

Разве Rhino Shell не то, что вы ищете?

1 голос
/ 03 сентября 2008

В этом сообщении Джона Резига говорится, что есть оболочки для Тамарин (Firefox 4?) и JavaScriptCore (Safari 3) . Я не уверен, что у них есть автозаполнение.

0 голосов
/ 04 апреля 2011

jslibs (автономная среда выполнения javascript) также могут быть пригодны для этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...