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.
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).
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 prostyjs24
, 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 wykonywalnynodejs
, jak i jako alternatywa (w sensie Debiana), aby dostarczyć plik wykonywalnyjs
. 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!
$
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ć.
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.
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)
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.
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]
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" /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 !
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
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!
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
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
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