Выполнение 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, который может быть использован также в качестве интерактивного интерпретатора. (Тег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/jsshebang линия и вещи будет просто работать:$ 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! $
Я знаю, что вы спросили о Linux и Mac; я собираюсь предоставить ответ для Windows, в случае, если другие люди, которые заинтересованы в Windows, найдут ваш вопрос .
Windows включает в себя движок Javascript, который можно использовать из командной строки.
все версии Windows, начиная с Windows 98, включили что-то под названием "Узел Скриптов Windows". Это стандартный для windows способ поддержки скриптовых "движков". Поскольку первый релиз, WSH поддерживает JScript, версию Microsoft Javascript. Среди прочего, это означает, что из командной строки windows вы можете просто вызвать имя любого *.js-файл, и он будет работать в движке JScript. (через любой wscript.exe или cscript.exe)
вы можете увидеть этот вопрос: что такое ProgId или CLSID для движка Javascript IE9 (кодовое имя "чакра") чтобы узнать, как вызвать высокопроизводительный движок 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)
FWIW, узел.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. Безголовый браузер, который безумно быстро и идеально подходит для тестирования !
Я нашел этот действительно отличный движок с открытым исходным кодом ECMAScript, совместимый с JS, полностью написанный на C под названием duktape
Duktape-это встраиваемый движок Javascript, с акцентом на портативность и компактность.
удачи!
Ну там JavaScript как OSA, расширение, которое предоставляет JavaScript в качестве альтернативы appleScript. Я использую, что около 10 лет назад, не знаю, если он все еще работает с текущими версиями ОС
JSDB, доступным для Linux, Windows и Mac должны очень хорошо подойти. Он использует движок JavaScript SpiderMonkey Mozilla и, кажется, меньше хлопот для установки по сравнению с node.js (по крайней мере, в последний раз я пробовал узел.js пару лет назад).
Я нашел JSDB из этого интересного списка оболочек Javascript:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells
Comments