Wykonywanie JavaScript bez przeglądarki?


129

Patrzę na programowanie w Javascript bez przeglądarki. Chcę uruchamiać skrypty z wiersza poleceń systemu Linux lub Mac OS X, podobnie jak każdy inny język skryptowy (ruby, php, perl, python ...)

$ javascript my_javascript_code.js

Zajrzałem do pająka małpy (Mozilla) i wersji 8 (Google), ale oba wydają się być osadzone.

Czy ktoś używa JavaScript jako języka skryptowego do wykonania z wiersza poleceń?

Jeśli ktoś jest ciekawy dlaczego szukam do tego, byłem wywiercenie node.js . Wydajność node.js sprawia, że ​​zastanawiam się, czy javascript może być użytecznym językiem skryptowym do przetwarzania dużych danych.


node.js to interpreter wiersza poleceń javascript, prawda?
Nathan

5
node.js nie jest interpreterem, jest to struktura asynchroniczna zbudowana na implementacji javascript V8 od Google. Chociaż wierzę, że javascript intererpter V8 jest zawarty w instalacji węzła

1
Jeśli interpreter CLI V8 stanie się popularny, może być naprawdę dobrym narzędziem do nauki. Myślę, że nauka programowania w JavaScript może być niezłą zabawą. Szczerze mówiąc, Lua może być najlepszym wyborem („klasy” JS dezorientują wszystkich), ale możliwość wrzucenia JS do sieci spodobałaby się majsterkowiczom. Mogę sam wypróbować ten V8 CLI.
jasonmp85

@ jasonmp85 wykonywanie funkcji za pomocą nowego słowa kluczowego tworzy instancje obiektów. Kiedy odwołujesz się do właściwości / metody w instancji, jeśli sam obiekt jej nie ma, sprawdzana jest właściwość prototypu funkcji konstruktora. Użyj tego dla metod publicznych i zdefiniuj zmienne lokalne dla funkcji konstruktora, aby skutecznie uzyskać prywatne metody / właściwości (są to technicznie zamknięte zmienne ref'd). Koniec.
Erik Reppen

Odpowiedzi:


46

Znalazłem to powiązane pytanie na ten temat, ale jeśli chcesz bezpośrednich linków, oto one:

  • Możesz zainstalować Rhino tak, jak wskazali inni. Ten post przedstawia łatwy sposób na uruchomienie go i utworzenie aliasu polecenia, aby łatwo je wywołać
  • Jeśli korzystasz z komputera Mac, możesz użyć JavaScriptCore, który wywołuje silnik JavaScript WebKit. Oto post na ten temat
  • Możesz również użyć interpretera V8 Chome / Google. Oto instrukcje
  • JavaScript jako OSA jest interesujący, ponieważ umożliwia (AFAIK) interakcję ze skryptowymi aplikacjami OS X tak, jakbyś był w AppleScript (bez strasznej składni)

Dziwię się, że node.js nie ma powłoki, ale wydaje mi się, że bardziej przypomina serwer internetowy zorientowany na epoll / selector / zorientowany na zdarzenia, więc może nie potrzebuje pełnego zestawu funkcji JS, ale ja nie jestem zbyt zaznajomiony z jego wewnętrznym działaniem.

Ponieważ wydaje się, że interesuje Cię node.js i ponieważ jest on oparty na V8, najlepiej byłoby postępować zgodnie z tymi instrukcjami konfigurowania środowiska V8, aby mieć spójną podstawę do programowania w JavaScript (mam nadzieję, że JSC i V8 to głównie to samo, ale nie jestem pewien).


link do interpretera Chrome / Google V8 jest dokładnie tym, czego szukałem! Dziękuję Ci!
Daniel

2
NodeJS w wersji 0.1.101 ma replikę węzła, która daje dostęp CLI do środowiska. Świetnie nadaje się do testowania / uczenia się JS.
CyberFonic,

Z nodejs v0.10.25 na Ubuntu wpisywanie nodejsw terminalu daje dostęp do REPL.
Иван Бишевац

Który z powyższych elementów obejmuje HTML DOM?
Old Geezer

58

Główna odpowiedź

Tak, aby odpowiedzieć na Twoje pytanie, możliwe jest użycie JavaScript jako „zwykłego” języka skryptowego z wiersza poleceń, bez przeglądarki. Skoro inni jeszcze o tym nie wspominali, to widzę, że warto wspomnieć:

W systemach opartych na Debianie (a dotyczy to przynajmniej Ubuntu, Linux Mint i aptosid / sidux), poza opcjami instalacji Rhino i innych, o których już wspomniano, masz inne opcje:

  • Zainstaluj libmozjs-24-binpakiet, który zapewni Ci silnik Spidermonkey Mozilli w linii poleceń jako prosty js24, który może być również używany jako interaktywny interpreter. (Symbol 24w nazwie oznacza, że ​​odpowiada wersji 24 przeglądarki Firefox).

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

  • Zainstaluj pakiet, nodejsa będzie on dostępny zarówno jako plik wykonywalny, nodejsjak i jako alternatywa (w sensie Debiana), aby udostępnić jsplik wykonywalny. Kompilacja JIT jest udostępniana dzięki uprzejmości V8.

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

Tak więc, prawie bez kompilacji, będziesz mieć do dyspozycji trzy ciężkie silniki JavaScript.

Uzupełnienie

Po zainstalowaniu możesz po prostu utworzyć pliki za pomocą #!/usr/bin/jslinii shebang i wszystko będzie 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!
$

23

Zainstalowałem Node.js na iMacu i

node somefile.js

w bash będzie działać.


O MÓJ BOŻE! @ aw04 Absolutely
theapache64

dla mnie było to nodejs somefile.jsodkąd zainstalowałem pakiet
nodejs

to jest właściwa odpowiedź w 2019 roku. Node.JS to zawsze najbardziej wszechobecna i najprostsza droga.
wilsonhobbs

11

Wiem, że pytałeś o Linuksa i Maca; Mam zamiar udzielić odpowiedzi dla systemu Windows, na wypadek gdyby inne osoby zainteresowane systemem Windows znalazły Twoje pytanie.

Windows zawiera silnik Javascript, którego można używać z wiersza poleceń.

Wszystkie wersje systemu Windows, począwszy od Windows 98, zawierały coś, co nazywa się „ Hostem skryptów systemu Windows ”. Jest to standardowy sposób na obsługę "silników" skryptów. Od pierwszego wydania WSH obsługuje JScript, wersję 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 on działał w silniku JScript. (za pomocą wscript.exe lub cscript.exe)

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


8

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

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

W Javie 1.6 i 1.7 polecenie nazywa się jrunscript( jrunscript.exew systemie Windows) i można je znaleźć w folderze bin JDK.

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

Tak więc w Javie 1.8 polecenie nazywa się jjs( jjs.exew systemie Windows)


6

FWIW, node.js jest dostarczany z powłoką, spróbuj wpisać:

node-repl

po zainstalowaniu node.js, aby zobaczyć, jak działa. Instalacja rlwrap jest dość standardowa, aby dobrze działała.


Uważam, że replik węzłów, jak również używanie hash-bang, są bardzo dobre w uzyskiwaniu szybkich programów współpracujących z NodeJS. Jest szybki i łatwy w użyciu.
CyberFonic,

3

Możesz sprawdzić Rhino .

Powłoka Rhino zapewnia sposób uruchamiania skryptów JavaScript w trybie wsadowym:

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

3

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


3

Używam Ubuntu 12.10 i js z wiersza 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

Kilka przykładów:

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!' ]

Niebo jest granicą, więc idź dalej.



2

Znalazłem naprawdę fajny silnik JS zgodny z ECMAScript typu open source, całkowicie napisany w C, zwany duktape

Duktape to osadzalny silnik JavaScript, który koncentruje się na przenośności i niewielkich rozmiarach.

Powodzenia!


1

Cóż, istnieje JavaScript jako OSA , rozszerzenie, które zapewnia JavaScript jako alternatywę dla appleScript. Używałem tego około 10 lat temu, nie wiem, czy nadal działa z obecnymi wersjami systemu operacyjnego


1

JSDB , dostępne dla systemów Linux, Windows i Mac, powinno całkiem dobrze pasować. Używa silnika Spidermonkey Javascript Mozilli i wydaje się być mniej kłopotliwa w instalacji w porównaniu z node.js (przynajmniej ostatnio próbowałem node.js kilka lat temu).

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.