2010-05-31 2 views
120

Я ищу Javascript программирования без браузера. Я хочу, чтобы запускать скрипты из командной строки X Linux или Mac OS, так же, как мы управляем любым другим языком сценариев (рубиновый, PHP, Perl, Python ...)Выполнение JavaScript без браузера?

$ javascript my_javascript_code.js 

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

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

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

+0

Node.js является Java-интерпретатор командной строки, не так ли? – Nathan

+5

node.js не является интерпретатором, это асинхронная структура, основанная на реализации javascript V8 от Google.Хотя я действительно верю, что встроенный интранслятор V8 включен в установку узла –

+1

Если интерпретатор CLI V8 становится популярным, он может быть действительно хорошим инструментом обучения. Я думаю, что обучение программированию на JavaScript может быть довольно забавным. Lua может честно быть лучшим выбором («классы» JS «путают ад из всех»), но способность JS быть брошенным в Интернете понравится возиться. Я могу попробовать эту V8 CLI самостоятельно. – jasonmp85

ответ

43

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

  • Вы можете установить Rhino, как указали другие. This post показывает простой способ запустить его и выполнить псевдоним команды, чтобы вызвать его легко.
  • Если вы на Mac, вы можете использовать JavaScriptCore, который вызывает JavaScript-движок WebKit. Here's a post на нем
  • Вы также можете использовать интерпретатор Chom/Google V8. Here are instructions
  • JavaScript в OSA интересен тем, что он позволяет (AFAIK) взаимодействовать с сценарных приложениями OS X, как если бы вы были в AppleScript (без ужасного синтаксиса)

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

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

+0

переводчик Chrome/Google V8 - это именно то, что я искал! Спасибо! – Daniel

+2

NodeJS в 0.1.101 имеет узел-реплика, который дает вам доступ к среде CLI. Это отлично подходит для тестирования/обучения JS. – CyberFonic

+0

С nodejs v0.10.25 на Ubuntu, набрав 'nodejs' в терминале, дает доступ к REPL. –

3

Возможно, вы захотите зарегистрироваться Rhino.

The Rhino Shell обеспечивает способ выполнения сценариев JavaScript в пакетном режиме:

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

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

6

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

node-repl 

когда вы установили Node.js, чтобы увидеть его в действии. Стандартно установить rlwrap, чтобы заставить его работать хорошо.

+0

Я нахожу узел-реплику, а также используя хеш-бэнг, которые очень хороши в получении быстрых программ, работающих с NodeJS. Он быстрый и простой в использовании. – CyberFonic

2

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

10

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

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

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

Вы можете увидеть этот вопрос: What is the ProgId or CLSID for IE9's Javascript engine (code-named "Chakra"), чтобы узнать, как запустить выше производительность двигателя IE9 Javascript из cscript.exe.

52

Главного Ответ

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

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

  • Установите libmozjs-24-bin пакет, который предоставит вам с двигателем Spidermonkey Mozilla, в командной строке в качестве простого js24, который может быть использован также в качестве интерактивного интерпретатора. (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 и как alternative (в Debian-смысле), чтобы обеспечить js исполняемый файл. Компиляция JIT предоставляется как любезность V8.

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

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

Добавление

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

$ 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! 
$ 
+1

+1 Второе решение прост. Спасибо! – Kevin

+0

инструкции от Google по строительству v8: https://developers.google.com/v8/build – Cheeso

17

Я установил Node.js на ИМАКЕ и

node somefile.js 

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

+0

wow this need more upvotes – aw04

7

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

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

В Java 1.6 и 1.7 команда называется jrunscript (jrunscript.exe на Windows) и могут быть найдены в бункерном папке JDK.

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

Таким образом, в Java 1.8 команда называется jjs (jjs.exe на Windows)

2

Я использую 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!' ] 

небо это предел, а затем сохранить право идти.

2

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

Duktape является встраиваемый движок Javascript , с уделением особого внимания мобильности и компактности.

Удачи вам!

1

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

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

Смежные вопросы