Wykonywanie JavaScript bez przeglądarki?

Zajmuję się programowaniem Javascript bez przeglądarki. Chcę uruchamiać skrypty z linii poleceń Linuksa lub Mac OS X, podobnie jak uruchamiamy każdy inny język skryptowy (ruby, php, perl, python...)

$ javascript my_javascript_code.js

Przyjrzałem się Spider monkey (Mozilla) i v8 (Google), ale oba wydają się być osadzone.

Czy ktoś używa Javascript jako języka skryptowego do wykonywania z linii poleceń?

Jeśli ktoś jest ciekawy, dlaczego się tym zajmuję, byłem węźle .js . Wydajność węzła.js sprawia, że zastanawiam się, czy javascript może być realnym językiem skryptowym do przetwarzania dużych danych.

Author: 太極者無極而生, 2010-05-31

13 answers

Znalazłem to podobne pytanie na ten temat, ale jeśli chcesz linki bezpośrednie, oto one:

  • możesz zainstalować Rhino, jak zauważyli inni. Ten post pokazuje prosty sposób, aby go uruchomić i jak alias polecenia, aby go łatwo wywołać
  • Jeśli jesteś na komputerze Mac, możesz użyć JavaScriptCore, który wywołuje silnik JavaScript WebKit. Oto post na nim
  • Możesz również użyć interpretera Chome/Google V8. Oto instrukcje
  • JavaScript jako OSA jest interesujący, ponieważ umożliwia (AFAIK) interakcję ze skryptowalnymi aplikacjami OS X tak, jakbyś był w AppleScript (bez strasznej składni)

Jestem zaskoczony.js nie pochodzi z powłoką, ale myślę, że to naprawdę bardziej jak epoll / selektor oparte callback / event zorientowany serwer WWW, więc być może nie potrzebuje pełnego zestawu funkcji JS, ale nie jestem zbyt zaznajomiony z jego wewnętrznego działania.

Skoro jesteś zainteresowany węzeł.js i ponieważ jest on oparty na V8, to może być najlepiej postępować zgodnie z tymi instrukcjami na uzyskanie środowiska V8 skonfigurować więc można mieć spójne podstawy dla programowania JavaScript (powinienem mieć nadzieję, że JSC i V8 są w większości takie same, ale nie jestem pewien).

 43
Author: jasonmp85,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:31

Główna Odpowiedź

Tak, aby odpowiedzieć na twoje pytanie, możliwe jest użycie JavaScript jako" zwykłego " języka skryptowego z linii poleceń, bez przeglądarki. Ponieważ inni jeszcze o tym nie wspominali, widzę, że warto o tym wspomnieć: {]}

Na systemach opartych na Debianie (dotyczy to przynajmniej Ubuntu, Linux Mint i aptosid / sidux), poza opcjami instalacji Rhino i innych już wymienionych, masz inne opcje:

  • Zainstaluj libmozjs-24-bin pakiet, który dostarczy Ci Silnik Mozilli Spidermonkey w linii poleceń jako prosty js24, który może być również używany jako interaktywny interpreter. (24 w nazwie oznacza, że odpowiada wersji 24 Firefoksa).

  • Zainstaluj libv8-dev pakiet, który zapewni Ci silnik V8 Google. Ma, jako jeden ze swoich przykładów, plik /usr/share/doc/libv8-dev/examples/shell.cc.gz, który można rozpakować i skompilować w bardzo prosty sposób (np., g++ -Os shell.cc -o shell -lv8).

  • Zainstaluj pakiet nodejs będzie on dostępny zarówno jako plik wykonywalny nodejs, jak i jako alternatywa (w sensie Debiana), aby dostarczyć plik wykonywalny js. Kompilacja JIT jest udostępniona dzięki uprzejmości V8.

  • Zainstaluj pakiet libjavascriptcoregtk-3.0-bin i używać interpretera JavaScriptCore WebKit (jsc) jako zwykłego interpretera z linii poleceń. I to bez konieczności posiadania dostępu do komputera Mac. Na wielu platformach (np. x86 i x86_64), interpreter ten będzie dostarczany z kompilatorem JIT.

Tak więc, bez prawie żadnej kompilacji, będziesz miał do dyspozycji trzy ciężkie silniki JavaScript.

Dodatek

Po zainstalowaniu rzeczy, możesz po prostu utworzyć pliki za pomocą linii #!/usr/bin/js shebang i wszystko będzie po prostu działać:

$ 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!
$
 54
Author: rbrito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-28 02:39:40

Zainstalowałem Node.js na iMac i

node somefile.js

W bash będzie działać.

 20
Author: 太極者無極而生,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-01 09:38:06

Wiem, że pytałeś o Linuksa i Maca; mam zamiar dostarczyć odpowiedź Dla Windows, w przypadku innych osób, które są zainteresowane Windows znaleźć swoje pytanie .

System Windows zawiera silnik Javascript, który może być używany z wiersza poleceń.

Wszystkie wersje systemu Windows, od Windows 98, zawierają coś o nazwie " Windows Script Host". Jest to standardowy sposób obsługi skryptów "silniki" w systemie windows. Od pierwszego wydania WSH obsługuje JScript, wersja Javascript firmy Microsoft. Oznacza to między innymi, że z wiersza poleceń systemu windows można po prostu wywołać nazwę dowolnego *.pliku js i będzie działać w silniku JScript. (poprzez wscript.exe lub cscript.exe)

Możesz zobaczyć to pytanie: Co to jest ProgId lub CLSID dla silnika JavaScript IE9 (o nazwie kodowej "Chakra") aby dowiedzieć się, jak wywołać silnik JavaScript IE9 o wyższej wydajności z cscript.exe.

 10
Author: Cheeso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:42

Ponieważ nikt o tym nie wspomniał: od wersji Java 1.6 Java JDK jest również dostarczany z wierszem poleceń JavaScript i REPL.

Opiera się na Rhino: https://developer.mozilla.org/en/docs/Rhino

W Javie 1.6 i 1.7 komenda jest wywoływana jrunscript (jrunscript.exe w systemie Windows) i można je znaleźć w folderze bin JDK.

Począwszy od Javy 1.8 jest dołączona nowa implementacja JavaScript (Nashorn: https://blogs.oracle.com/nashorn/)

Tak w Javie 1.8 Komenda nazywa się jjs (jjs.exe Na Windows)

 8
Author: jbandi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-23 22:02:30

FWIW, węzeł.js ma powłokę, spróbuj wpisać:

node-repl

Po zainstalowaniu node.js, aby zobaczyć go w akcji. Instalowanie rlwrap jest dość standardowe, aby działał ładnie.

 6
Author: thejefflarson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-31 05:38:35

Możesz sprawdzić Rhino .

Powłoka Rhino umożliwia uruchamianie skryptów JavaScript w trybie wsadowym:

java org.mozilla.javascript.tools.shell.Main my_javascript_code.js [args]
 3
Author: Daniel Vassallo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-31 04:52:22

Używam Ubuntu 12.10 i js z linii poleceń

Jest dostępny z moją instalacją Javy:

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

Niektóre przykłady:

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!' ]
/ Align = "left" /
 3
Author: Eric Leschinski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-08 08:19:45

Wiem, że to stare, ale powinieneś też spróbować Zombie.js . Bezgłowa przeglądarka, która jest szalenie szybka i idealna do testowania !

 2
Author: neebz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-23 08:07:19

PhantomJS pozwala również na to

Http://phantomjs.org/

 2
Author: Sameer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-07 18:13:24

Znalazłem naprawdę fajny silnik js zgodny z ECMAScript, całkowicie napisany w C o nazwie duktape

Duktape jest wbudowanym silnikiem Javascript, z naciskiem na przenośność i kompaktowe rozmiary.

Powodzenia!

 2
Author: Pawan Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-11 15:12:30

Istnieje JavaScript jako OSA, rozszerzenie, które dostarcza JavaScript jako alternatywę dla appleScript. Używałem tego około 10 lat temu, Nie wiem, czy nadal działa z bieżącymi wersjami systemu operacyjnego

 1
Author: Sean Patrick Floyd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-31 04:55:02

JSDB, Dostępny dla Linuksa, Windows i Mac powinien pasować całkiem dobrze. Korzysta z silnika JavaScript Mozilli Spidermonkey i wydaje się być mniej kłopotliwy do zainstalowania w porównaniu do node.js (przynajmniej Ostatnio próbowałem node.js kilka lat temu).

Znalazłem JSDB z tej ciekawej listy powłok Javascript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells

 1
Author: Andz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-02 19:22:29