Menjalankan JavaScript tanpa browser?

129

Saya mencari pemrograman Javascript tanpa browser. Saya ingin menjalankan skrip dari Linux atau Mac OS X command line, seperti halnya kami menjalankan bahasa scripting lainnya (ruby, php, perl, python ...)

$ javascript my_javascript_code.js

Saya melihat ke laba-laba monyet (Mozilla) dan v8 (Google), tetapi keduanya tampaknya tertanam.

Adakah yang menggunakan Javascript sebagai bahasa scripting untuk dieksekusi dari baris perintah?

Jika ada yang ingin tahu mengapa saya melihat ke dalam ini, saya telah mengaduk-aduk node.js . Kinerja node.js membuat saya bertanya-tanya apakah javascript dapat menjadi bahasa skrip yang layak untuk memproses data besar.

Daniel
sumber
node.js adalah penerjemah baris perintah javascript bukan?
Nathan
5
node.js bukan interpreter, ini adalah kerangka kerja async yang dibangun pada implementasi javascript V8 dari Google. Meskipun saya benar-benar percaya javascript intererpter V8 termasuk dalam instalasi node
1
Jika interpreter CLI V8 menjadi populer itu bisa menjadi alat pengajaran yang sangat baik. Saya pikir belajar memprogram dalam JavaScript bisa sangat menyenangkan. Lua mungkin secara jujur ​​menjadi pilihan terbaik ("kelas" JS membingungkan semua orang), tetapi kemampuan JS untuk dilemparkan ke web akan menarik bagi para penjahat. Saya dapat mencoba CLI V8 ini sendiri.
jasonmp85
@ jasonmp85 menjalankan fungsi dengan kata kunci baru membuat instance objek. Ketika Anda mereferensikan properti / metode pada instance, jika objek itu sendiri tidak memilikinya, properti prototipe dari fungsi konstruktor diperiksa. Gunakan ini untuk metode publik dan tentukan vars lokal ke fungsi konstruktor untuk secara efektif mendapatkan metode / alat peraga pribadi (ini secara teknis adalah penutupan refar vars). Tamat.
Erik Reppen

Jawaban:

46

Saya menemukan pertanyaan terkait ini pada topik, tetapi jika Anda ingin tautan langsung, ini dia:

  • Anda dapat menginstal Rhino seperti yang ditunjukkan orang lain. Posting ini menunjukkan cara mudah untuk menjalankan dan menjalankannya dan cara alias perintah untuk menjalankannya dengan mudah
  • Jika Anda menggunakan Mac, Anda dapat menggunakan JavaScriptCore, yang menggunakan mesin JavaScript WebKit. Ini ada tulisan di situ
  • Anda dapat menggunakan penerjemah Chome / Google V8 juga. Berikut ini petunjuknya
  • JavaScript sebagai OSA menarik karena memungkinkan Anda (AFAIK) berinteraksi dengan aplikasi OS X yang dapat dituliskan seolah-olah Anda berada di AppleScript (tanpa sintaks yang buruk)

Saya terkejut node.js tidak datang dengan shell, tapi saya kira itu benar-benar lebih seperti webserver yang berorientasi pada epoll / selector / event-oriented, jadi mungkin tidak memerlukan set fitur JS lengkap, tapi saya Saya tidak terlalu terbiasa dengan pekerjaan batinnya.

Karena Anda tampaknya tertarik pada node.js dan karena ini didasarkan pada V8, mungkin yang terbaik untuk mengikuti instruksi untuk mendapatkan pengaturan lingkungan V8 sehingga Anda dapat memiliki dasar yang konsisten untuk pemrograman JavaScript Anda (saya berharap JSC dan V8 sebagian besar sama, tapi saya tidak yakin).

jasonmp85
sumber
tautan penerjemah Chrome / Google V8 persis seperti yang saya cari! Terima kasih!
Daniel
2
NodeJS di 0.1.101 memiliki node-repl yang memberi Anda akses CLI ke lingkungan. Ini bagus untuk menguji / belajar JS.
CyberFonic
Dengan nodejs v0.10.25 pada Ubuntu mengetik nodejsterminal memberikan akses ke REPL.
Иван Бишевац
Manakah dari yang di atas, jika ada, termasuk HTML DOM?
Pak Tua
57

Jawaban utama

Ya, untuk menjawab pertanyaan Anda, dimungkinkan untuk menggunakan JavaScript sebagai bahasa skrip "biasa" dari baris perintah, tanpa browser. Karena orang lain belum menyebutkannya, saya melihat bahwa itu layak disebutkan:

Pada sistem berbasis Debian (dan ini termasuk Ubuntu, Linux Mint, dan aptosid / sidux, setidaknya), selain opsi untuk menginstal Rhino dan lainnya yang telah disebutkan, Anda memiliki opsi lain:

  • Instal libmozjs-24-binpaket, yang akan memberi Anda mesin Spidermonkey Mozilla di baris perintah sebagai sederhana js24, yang dapat digunakan juga sebagai juru bahasa interaktif. ( 24Nama tersebut sesuai dengan versi 24 dari Firefox).

  • Instal libv8-devpaket, yang akan memberi Anda mesin V8 Google. Ia memiliki, sebagai salah satu contohnya, file /usr/share/doc/libv8-dev/examples/shell.cc.gzyang dapat Anda kompres dan kompilasi dengan sangat sederhana (misalnya, g++ -Os shell.cc -o shell -lv8).

  • Instal paket nodejsdan itu akan tersedia baik sebagai executable nodejsdan sebagai alternatif (dalam arti Debian) untuk menyediakan jsexecutable. Kompilasi JIT disediakan sebagai milik V8.

  • Instal paket libjavascriptcoregtk-3.0-bindan gunakan penerjemah JavaScriptCore WebKit ( jsc) sebagai juru bahasa biasa dari baris perintah. Dan ini tanpa perlu memiliki akses ke Mac. Pada banyak platform (mis., X86 dan x86_64), juru bahasa ini akan datang dengan kompiler JIT.

Jadi, dengan hampir tanpa kompilasi Anda akan memiliki tiga mesin JavaScript kelas berat yang Anda inginkan.

Tambahan

Setelah Anda menginstal sesuatu, Anda dapat membuat file dengan #!/usr/bin/jsbaris shebang dan semuanya akan berfungsi:

$ 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!
$
rbrito
sumber
23

Saya telah menginstal Node.js pada iMac dan

node somefile.js

di bash akan bekerja.

nonopolaritas
sumber
OH TUHAN! @ aw04 Absolutely
theapache64
bagi saya itu adalah nodejs somefile.jskarena saya telah menginstal paket
nodejs
ini adalah jawaban yang tepat pada tahun 2019. Node.JS selalu merupakan cara yang paling umum dan paling mudah untuk dilakukan.
wilsonhobbs
10

Saya tahu Anda bertanya tentang Linux dan Mac; Saya akan memberikan jawaban untuk Windows, kalau-kalau orang lain yang tertarik pada Windows menemukan pertanyaan Anda.

Windows menyertakan mesin Javascript yang dapat digunakan dari baris perintah.

Semua versi Windows, sejak Windows 98, telah memasukkan sesuatu yang disebut " Host Script Windows ". Ini adalah cara standar windows untuk mendukung skrip "mesin". Sejak rilis pertama, WSH mendukung JScript, versi Javascript dari Microsoft. Antara lain, ini berarti bahwa, dari baris perintah windows, Anda bisa memanggil nama file * .js, dan itu akan berjalan di mesin JScript. (melalui wscript.exe atau cscript.exe)

Anda dapat melihat pertanyaan ini: Apa itu ProgId atau CLSID untuk mesin Javascript IE9 (kode-bernama "Chakra") untuk belajar bagaimana memanggil mesin Javascript IE9 dengan kinerja lebih tinggi dari cscript.exe.

Cheeso
sumber
8

Karena tidak ada yang menyebutkannya: Sejak Java 1.6 Java JDK juga dibundel dengan commandline JavaScript dan REPL.

Ini didasarkan pada Badak: https://developer.mozilla.org/en/docs/Rhino

Di Java 1.6 dan 1.7 perintah ini disebut jrunscript(jrunscript.exe pada Windows) dan dapat ditemukan di folder bin JDK.

Mulai dari Jawa 1.8 ada paket implementasi JavaScript baru (Nashorn: https://blogs.oracle.com/nashorn/ )

Jadi di Java 1.8 perintah ini disebut jjs( jjs.exedi Windows)

jbandi
sumber
6

FWIW, node.js hadir dengan sebuah shell, coba ketikkan:

node-repl

setelah Anda menginstal node.js untuk melihatnya beraksi. Cukup standar untuk menginstal rlwrap agar berfungsi dengan baik.

thejefflarson
sumber
Saya menemukan node-repl serta menggunakan hash-bang keduanya sangat bagus untuk mendapatkan program cepat yang bekerja dengan NodeJS. Ini cepat dan mudah digunakan.
CyberFonic
3

Anda mungkin ingin memeriksa Badak .

Rhino Shell menyediakan cara untuk menjalankan skrip JavaScript dalam mode batch:

java org.mozilla.javascript.tools.shell.Main my_javascript_code.js [args]
Daniel Vassallo
sumber
3

Saya tahu ini sudah tua tetapi Anda juga harus mencoba Zombie.js . Browser tanpa kepala yang sangat cepat dan ideal untuk pengujian!

neebz
sumber
3

Saya menggunakan Ubuntu 12.10 dan js dari commandline

Ini tersedia dengan instalasi java saya:

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

Beberapa contoh:

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

Langit adalah batasnya, lalu terus berjalan.

Eric Leschinski
sumber
2

PhantomJS memungkinkan Anda untuk melakukan ini juga

http://phantomjs.org/

Sameer Alibhai
sumber
2

Saya menemukan sumber terbuka ini benar-benar bagus ECMAScript JS Engine compliant sepenuhnya ditulis dalam C yang disebut duktape

Duktape adalah mesin Javascript yang dapat disematkan, dengan fokus pada portabilitas dan jejak yang ringkas.

Semoga berhasil!

Pawan Kumar
sumber
1

Yah ada JavaScript sebagai OSA , ekstensi yang menyediakan JavaScript sebagai alternatif untuk appleScript. Saya sudah menggunakannya sekitar 10 tahun yang lalu, tidak tahu apakah masih bekerja dengan versi OS saat ini

Sean Patrick Floyd
sumber
1

JSDB , tersedia untuk Linux, Windows, dan Mac harus sesuai dengan tagihan. Ini menggunakan mesin Javascript Spidermonkey Mozilla dan tampaknya tidak terlalu merepotkan untuk menginstal dibandingkan dengan node.js (setidaknya terakhir kali saya mencoba node.js beberapa tahun yang lalu).

Saya menemukan JSDB dari daftar kerang Javascript yang menarik ini: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells

Andz
sumber