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

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

$ javascript my_javascript_code.js

Я заглянул в пауковую обезьяну (Mozilla) и v8 (Google), но оба они, кажется, встроены.

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

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

Ответ 1

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

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

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

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

Ответ 2

Основной ответ

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

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

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

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

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

  • Установите пакет libjavascriptcoregtk-3.0-bin и используйте интерпретатор WebKit JavaScriptCore (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!
$

Ответ 3

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

node somefile.js

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

Ответ 4

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

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

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

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

Ответ 5

Так как никто не упоминал об этом: начиная с 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)

Ответ 6

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

node-repl

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

Ответ 7

Вы можете проверить Rhino.

В Rhino Shell предусмотрена возможность запуска сценариев JavaScript в пакетном режиме:

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

Ответ 8

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

Ответ 9

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

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

[email protected]:~/foo$ java -version
java version "1.6.0_27"
[email protected]:~/foo$ which js
/usr/bin/js

Некоторые примеры:

[email protected]:~/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!' ]

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

Ответ 11

Я нашел этот действительно отличный open source совместимый с ECMAScript JS Engine, полностью написанный на C под названием duktape

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

Удачи!

Ответ 12

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

Ответ 13

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

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