Выполнение JavaScript без браузера?

Я изучаю Программирование Javascript без браузера. Я хочу запускать скрипты из командной строки Linux или Mac OS X, как и любой другой язык сценариев (ruby, php, perl, python...)

$ javascript my_javascript_code.js

Я посмотрел в Spider monkey (Mozilla) и v8 (Google), но оба они, похоже, встроены.

кто-нибудь использует Javascript в качестве языка сценариев для выполнения из командной строки?

Если кому-то интересно, почему я ищу в этом ковыряюсь узел.js. Производительность узла.js заставляет меня задуматься, может ли javascript быть жизнеспособным языком сценариев для обработки больших данных.

13 ответов


Я нашел это вопрос по теме, но если вы хотите прямые ссылки, вот они:

  • вы можете установить Rhino, как указывали другие. этот пост показывает простой способ, чтобы получить его и работает, и как псевдоним команды, чтобы вызвать его легко
  • если вы находитесь на Mac, вы можете использовать JavaScriptCore, который вызывает движок JavaScript WebKit. вот пост на
  • вы можете использовать Chome / Google V8 переводчик тоже. вот инструкции
  • JavaScript как OSA интересен, потому что он позволяет вам (AFAIK) взаимодействовать со скриптовыми приложениями OS X, как если бы Вы были в AppleScript (без ужасного синтаксиса)

Я удивлен узел.js не поставляется с оболочкой, но я думаю, что это действительно больше похоже на epoll / selector-based callback / event-oriented webserver, поэтому, возможно, ему не нужен полный набор функций JS, но я не слишком знаком с его внутренние механизмы.

Так как вы, кажется, заинтересованы в узле.js и поскольку он основан на V8, возможно, лучше всего следовать этим инструкциям по настройке среды V8, чтобы вы могли иметь согласованную основу для программирования JavaScript (я должен надеяться, что JSC и V8 в основном одинаковы, но я не уверен).


Главный Ответ

да, чтобы ответить на ваш вопрос, можно использовать JavaScript в качестве "обычного" языка скриптов из командной строки, без браузера. Поскольку другие еще не упоминали об этом, я вижу, что стоит упомянуть:

в системах на основе Debian (и это включает в себя Ubuntu, Linux Mint и aptosid/sidux, по крайней мере), помимо вариантов установки Rhino и других, уже упомянутых, у вас есть другие опции:

  • установить libmozjs-24-bin пакет, который предоставит вам движок Spidermonkey Mozilla в командной строке как простой js24, который может использоваться также в качестве интерактивного переводчика. (The 24 в названии означает, что он соответствует версии 24 Firefox).

  • установить libv8-dev пакет, который предоставит вам двигатель V8 от Google. В качестве одного из примеров можно привести файл /usr/share/doc/libv8-dev/examples/shell.cc.gz который вы можете распаковать и скомпилировать очень просто (например,g++ -Os shell.cc -o shell -lv8).

  • установить пакет nodejs и он будет доступен как исполняемый файл nodejs и альтернатива (в Debian-смысле) предоставить js исполняемый. JIT компиляция предоставляется в качестве любезности V8.

  • установить пакет libjavascriptcoregtk-3.0-bin и использовать интерпретатор JavaScriptCore WebKit (jsc) в качестве обычного интерпретатора из командной строки. И это без необходимости иметь доступ к Mac. На многих платформах (например, x86 и x86_64), этот интерпретатор с JIT-компилятором.

Итак, почти без компиляции у вас будет три тяжелых движка JavaScript в вашем распоряжении.

дополнительное соглашение

после того, как вы установили вещи, вы можете просто создавать файлы с помощью #!/usr/bin/js линия shebang и вещи будет просто работать:

$ cat foo.js 
#!/usr/bin/js

console.log("Hello, world!");
$ ls -lAF /usr/bin/js /etc/alternatives/js /usr/bin/nodejs
lrwxrwxrwx 1 root root      15 Jul 16 04:26 /etc/alternatives/js -> /usr/bin/nodejs*
lrwxrwxrwx 1 root root      20 Jul 16 04:26 /usr/bin/js -> /etc/alternatives/js*
-rwxr-xr-x 1 root root 1422004 Apr 28 20:31 /usr/bin/nodejs*
$ chmod a+x foo.js 
$ ./foo.js 
Hello, world!
$ js ./foo.js
Hello, world!
$

Я установил узел.js на iMac и

node somefile.js

в bash будет работать.


Я знаю, что вы спрашивали о Linux и Mac; я собираюсь предоставить ответ для Windows, в случае, если другие люди, которые заинтересованы в Windows, найдут ваш вопрос .

Windows включает движок Javascript, который можно использовать из командной строки.

все версии Windows, начиная с Windows 98, включили что-то под названием "Хост Скрипта Windows". Это стандартный для windows способ поддержки скриптов "движки". Поскольку первый выпуск, WSH поддерживает JScript, версию Javascript от Microsoft. Среди прочего, это означает, что из командной строки windows вы можете просто вызвать имя любого *.JS-файл, и он будет работать в движке JScript. (через любой wscript.exe или cscript.exe)

вы можете увидеть этот вопрос: что такое ProgId или CLSID для движка Javascript IE9 (кодовое название "Chakra") чтобы узнать, как вызвать высокопроизводительный движок IE9 Javascript из команду cscript.исполняемый.


поскольку никто не упоминал об этом: поскольку Java 1.6 Java JDK также поставляется в комплекте с командной строкой JavaScript и REPL.

Он основан на Rhino:https://developer.mozilla.org/en/docs/Rhino

в Java 1.6 и 1.7 команда называется jrunscript (jrunscript.exe в Windows) и можно найти в папке bin JDK.

начиная с Java 1.8, в комплекте идет новая реализация JavaScript (Nashorn: https://blogs.oracle.com/nashorn/)

поэтому в Java 1.8 команда называется jjs (jjs.exe в Windows)


чистки рядов, узел.js поставляется с оболочкой, попробуйте ввести:

node-repl

после установки узла.js, чтобы увидеть это в действии. Это довольно стандартно установить rlwrap, чтобы заставить его работать красиво.


вы можете ознакомиться носорог.

оболочка Rhino предоставляет способ запуска сценариев JavaScript в пакетном режиме:

java org.mozilla.javascript.tools.shell.Main my_javascript_code.js [args]

Я использую Ubuntu 12.10 и js из командной строки

Он доступен с моей установкой java:

el@apollo:~/foo$ java -version
java version "1.6.0_27"
el@apollo:~/foo$ which js
/usr/bin/js

примеры:

el@apollo:~/foo$ js
> 5
5

> console.log("hello");
hello
undefined

> var f = function(){ console.log("derp"); };
undefined
> f();
derp

> var mybool = new Boolean();
undefined
> mybool
{}
> mybool == true
false
> mybool == false
true

> var myobj = {};
undefined
> myobj.skipper = "on my mark, engage!"
'on my mark, engage!'
> myobj.skipper.split(" ");
[ 'on',
  'my',
  'mark,',
  'engage!' ]

небо-это предел, а затем продолжайте идти.


Я знаю, что это старый, но вы должны также попробовать зомбирование.js. Безголовый браузер, который безумно быстро и идеально подходит для тестирования !


PhantomJS позволяет сделать это, а также

http://phantomjs.org/


Я нашел этот действительно отличный движок с открытым исходным кодом ECMAScript, совместимый с JS, полностью написанный на C под названием duktape

Duktape-это встраиваемый движок Javascript с акцентом на переносимость и компактность.

удачи!


Ну там JavaScript как OSA, расширение, которое предоставляет JavaScript в качестве альтернативы appleScript. Я использую это около 10 лет назад, не знаю, работает ли он все еще с текущими версиями ОС


адррес jsdb, доступный для Linux, Windows и Mac, должен соответствовать счету довольно хорошо. Он использует движок SpiderMonkey Javascript Mozilla и, кажется, меньше хлопот для установки по сравнению с узлом.js (по крайней мере, в последний раз, когда я пробовал узел.js пару лет назад).

Я нашел JSDB из этого интересного списка оболочек Javascript:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells