Menjalankan V8 Javascript Engine Standalone


128

Saya ingin menjalankan konsol Javascript di atas V8. Bagaimana saya melakukan ini?

Jawaban:


115

V8 mudah dibuat dan tidak disertai dengan Java VM overhead dari interpreter Javascript mandiri Mozilla. Untungnya, V8 dilengkapi dengan kode untuk membangun konsol. Inilah cara membuat ini:

$> svn co http://v8.googlecode.com/svn/trunk v8-trunk
...
$> cd v8-trunk
$> scons
$> g ++ ./samples/shell.cc -o v8-shell -Saya termasuk libv8.a 

Sekarang, kita memiliki biner mandiri yang disebut v8-shell.

Menjalankan konsol:

$> ./v8-shell 
V8 versi 2.0.2
> var x = 10;
> x
10
> function foo (x) {return x * x; }
> foo
function foo (x) {return x * x; }
> berhenti ()

Menjalankan Javascript dari baris perintah:

$> ./v8-shell -e 'print ("10 * 10 =" + 10 * 10)'
10 * 10 = 100

Banyak lagi fitur yang didokumentasikan dalam bantuan:

$> ./v8-shell --help
Pemakaian:
...

9
Terima kasih atas tip dan instruksi eksplisitnya. Saya harus menambahkan opsi -lpthreadke g++perintah di bawah ubuntu 10.04.
intuited

1
scons gagal untuk saya di Ubuntu, tetapi menjalankan sudo apt-get install libc6-dev-i386 menyelesaikannya.
Thorsten Lorenz

2
dan jika pada x86_64 Anda melakukan: 'scons arch = x64' hingga diperbaiki di trunk code.google.com/p/v8/issues/detail?id=429#c1
EdH

4
Harap dicatat bahwa shell v8 ini dimaksudkan sebagai contoh mainan. Shell v8 "asli" disebut d8. Lihat jawaban saya untuk info lebih lanjut.
bukzor

2
Metode untuk mengambil kode sumber tampaknya berubah. Lihat di sini .
Colliot

59

Untuk membangun konsol pengembang, daripada contoh aplikasi mainan 'shell', salin dan tempel perintah di bawah ini ke terminal Anda.

sudo apt-get install subversion scons libreadline-dev
svn co http://v8.googlecode.com/svn/trunk v8
cd v8/
scons console=readline d8

Instruksi ini akan bekerja untuk Ubuntu / Debian dengan kernel "generik". Untuk distribusi lain, Anda perlu mengganti perintah apt-get dengan alat paket apa pun yang Anda miliki. Pada sistem 64-bit, Anda mungkin perlu menambahkan arch=x64. The console=readlinepilihan memungkinkan readline sistem, untuk membuatnya merasa sedikit lebih seperti shell standar.

Dokumentasi lebih lengkap di sini: http://code.google.com/apis/v8/build.html


catatan:

masukkan deskripsi gambar di sini

Lihat juga: Membangun v8 dengan GYP


9
Saya harus menambahkan arch=x64untuk membangun ubuntu 64bit.
projectshave

@Hugh: Ini mengaktifkan sistem readline; inilah yang memungkinkan Anda untuk menggunakan panah atas untuk mendapatkan perintah sebelumnya, di antara basa-basi lainnya.
bukzor

Setelah bangunan selesai, jalankan shell dengan masuk ./d8.
Mathias Bynens

di ubunt 12.04: kesalahan fatal: readline / readline.h: Tidak ada file atau direktori seperti itu - ada ide?
pguardiario

44

Bagaimana menjalankan Javascript V8 melalui command line menggunakan node.js ?

node.js menggunakan v8 sebagai engine dan menambahkan banyak fungsi di atasnya.


Misalnya pada Mac OSX jika Anda telah menginstal Homebrew , cukup terbitkan:

    $ brew install node
    $ node
    > 

1
IMHO node.js adalah standar defacto baru dalam hal konsol JavaScript. Ini menggunakan v8, dan mungkin merupakan opsi terbaik untuk digunakan untuk ini.
Tracker1

23

Pada Mac OS X pastikan untuk brewmenginstal. Kemudian jalankan saja perintah (sudo) brew install v8, tergantung pada mesin Anda ini mungkin perlu waktu. Untuk memulai konsol V8, jalankan v8- Voilà!

Kiat: Untuk keluar dari konsol, jalankan saja quit()dan jangan lupa tanda kurung!


1
Atau cukup tekan Ctrl-Duntuk keluar :)
Dogbert

Atau Ctrl-Cuntuk membunuhnya
Braden Best

Anda dapat membangun v8 dengan sendirinya dan itu cukup sederhana, menggunakan minuman terlalu rumit.
B01

4
Bagaimana 'brew install v8' merepotkan?
Devan Buggay

5

Saya pikir ini mungkin telah berubah. Saya membaca manual dan membangun v8 seperti ini:

moose@pc08$ svn co http://v8.googlecode.com/svn/trunk v8-trunk
moose@pc08$ cd v8-trunk
moose@pc08$ make dependencies
moose@pc08$ make ia32.release

ditambahkan export PATH=${PATH}:/home/moose/Downloads/v8-trunk/out/ia32.releaseke .bashrc saya

moose@pc08 ~ $ source ~/.bashrc
moose@pc08 ~ $ d8 A_tic_tac_toe_Tomek.js < A-small-practice.in

(Dengan javascript dari aditsu dan A-small-practice.in dari Google Code Jam)


2
Halaman yang penuh dengan tanggapan dan tanggapan Anda, yang paling kurang diperhatikan, berisi saran terakhir yang saya butuhkan.
Seth Difley

4

Setelah mengikuti instruksi pembuatan ( Google V8 Build Docs ) untuk sistem Anda;

[v8 directory]$ cd out/native
[v8 directory]$ ./shell (sample shell)
[v8 directory]$ ./d8 (console: dumb)

Saya membuat alias di .bash_profile saya untuk memfasilitasi permohonan shell.

alias v8='/Volumes/Dev/GitHub/v8/out/native/shell'

Mengetik v8 di CLI (di Terminal atau shell baru - untuk memuat ulang profil bash Anda) menghasilkan shell v8. JavaScript di command prompt! :)


3

Jika Anda menggunakan ArchLinux, Anda dapat menggunakannya pacman -S v8untuk menginstalnya. Kemudian gunakan d8untuk memulainya di shell Anda. Bersenang senang lah.


1
Itu tampaknya berada di AUR sehingga tidak dapat diinstal dengan pacman.
Colliot

3

Jika Anda ingin menjalankan kode sumber javascript menggunakan mesin v8 atau versi apa pun, Anda dapat menggunakan alat baris perintah jsvu . Ini dikembangkan dan dikelola oleh para insinyur Google dan, di samping itu, ia menawarkan fitur menginstal mesin javascript lain selain v8 , seperti spidermonkey , chakracore , javascriptcore , dan xs .


2

Jika Anda berencana untuk menanamkan V8, tentu saja membangunnya dan bermain dengan "d8".

Jika di sisi lain, Anda tidak berencana untuk memperpanjang V8 atau memperlakukannya sebagai opsional, maka cukup gunakan Node.JS. Jangan repot-repot dengan V8 murni.

Node.js benar-benar kaya I / O, ekstensi, perpustakaan (seperti Perl CPAN, Python Eggs, Ruby Gems), dan komunitas.


Anda tidak perlu menggunakan node.js, itu hanya pembungkus dan ketergantungan ekstra.
B01
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.