Ausführen von V8 Javascript Engine Standalone

127

Ich möchte eine Javascript-Konsole auf V8 ausführen. Wie mache ich das?

Manuel
quelle

Antworten:

115

V8 ist einfach zu erstellen und wird nicht mit dem Java VM-Overhead von Mozillas eigenständigem Javascript-Interpreter geliefert. Glücklicherweise wird V8 mit Code zum Erstellen einer Konsole geliefert. So bauen Sie das:

$> svn co http://v8.googlecode.com/svn/trunk v8-trunk
...
$> cd v8-trunk
$> Scons
$> g ++ ./samples/shell.cc -o v8-shell -Ich schließe libv8.a ein 

Jetzt haben wir eine eigenständige Binärdatei namens v8-shell.

Ausführen der Konsole:

$> ./v8-shell 
V8 Version 2.0.2
> var x = 10;
> x
10
> Funktion foo (x) {return x * x; }}
> foo
Funktion foo (x) {return x * x; }}
> quit ()

Ausführen von Javascript über die Befehlszeile:

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

Viele weitere Funktionen sind in der Hilfe dokumentiert:

$> ./v8-shell --help
Verwendung:
...
Georg Schölly
quelle
9
Danke für den Tipp und die expliziten Anweisungen. Ich musste die Option -lpthreadzum g++Befehl unter Ubuntu 10.04 hinzufügen .
Intuition
1
Scons sind unter Ubuntu für mich fehlgeschlagen, aber das Ausführen von sudo apt-get install libc6-dev-i386 hat das gelöst.
Thorsten Lorenz
2
und wenn Sie auf x86_64 sind, führen Sie Folgendes aus: 'scons arch = x64', bis es im Trunk- Code
behoben ist.
4
Bitte beachten Sie, dass diese v8-Shell als Spielzeugbeispiel gedacht ist. Die "echte" v8-Shell heißt d8. Siehe meine Antwort für weitere Informationen.
Bukzor
2
Die Methode zum Abrufen des Quellcodes scheint geändert zu sein. Siehe hier .
Colliot
59

Kopieren Sie die folgenden Befehle in Ihr Terminal, um die Entwicklerkonsole anstelle der beispielhaften Spielzeuganwendung "Shell" zu erstellen.

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

Diese Anweisung funktioniert für Ubuntu / Debian mit einem "generischen" Kernel. Bei anderen Distributionen müssen Sie den Befehl apt-get durch das verfügbare Paket-Tool ersetzen. Auf 64-Bit-Systemen müssen Sie möglicherweise hinzufügen arch=x64. Die console=readlineOption ermöglicht es dem Readline- System, dass es sich ein bisschen mehr wie eine Standard-Shell anfühlt.

Eine vollständigere Dokumentation finden Sie hier: http://code.google.com/apis/v8/build.html


Hinweis:

Geben Sie hier die Bildbeschreibung ein

Siehe auch: Erstellen von Version 8 mit GYP

Bukzor
quelle
9
Ich musste hinzufügen arch=x64, um auf 64-Bit-Ubuntu aufzubauen.
Projekte haben
@ Hugh: Es aktiviert das Readline-System; Auf diese Weise können Sie unter anderem den Aufwärtspfeil verwenden, um den vorherigen Befehl abzurufen.
Bukzor
Sobald der Bau abgeschlossen ist, führen Sie die Shell durch Eingabe aus ./d8.
Mathias Bynens
am ubunt 12.04: schwerwiegender Fehler: readline / readline.h: Keine solche Datei oder kein solches Verzeichnis - irgendwelche Ideen?
pguardiario
43

Wie wäre es mit V8 Javascript über die Befehlszeile mit node.js ?

node.js verwendet v8 als Engine und fügt darüber hinaus viele Funktionen hinzu.


Wenn Sie beispielsweise unter Mac OSX Homebrew installiert haben, geben Sie einfach Folgendes aus:

    $ brew install node
    $ node
    > 
tle
quelle
1
IMHO node.js ist der neue Standard für JavaScript-Konsolen. Es verwendet v8 und ist wahrscheinlich die beste Option dafür.
Tracker1
23

Stellen Sie unter Mac OS X sicher, dass es brewinstalliert ist. Führen Sie dann einfach den Befehl aus (sudo) brew install v8. Je nach Computer kann dies einige Zeit dauern. Um die V8-Konsole zu starten, führen Sie einfach v8- Voilà!

Tipp: Um die Konsole zu verlassen, führen Sie sie einfach aus quit()und vergessen Sie die Klammern nicht!

Mario Uher
quelle
1
Oder drücken Sie einfach, um Ctrl-Dzu beenden :)
Dogbert
Oder Ctrl-Cum es zu töten
Braden Best
Sie können v8 selbst erstellen und es ist einfach genug, die Verwendung von Brew ist einfach zu umständlich.
B01
4
Wie ist "Brew Install V8" umständlich?
Devan Buggay
5

Ich denke, das könnte sich geändert haben. Ich habe das Handbuch gelesen und v8 wie folgt erstellt:

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

export PATH=${PATH}:/home/moose/Downloads/v8-trunk/out/ia32.releasezu meiner .bashrc hinzugefügt

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

(Mit Javascript von aditsu und A-small-practice.in von Google Code Jam)

Martin Thoma
quelle
2
Eine Seite voller Antworten und Ihre, die am wenigsten beachtet wird, enthält den letzten Rat, den ich brauchte.
Seth Difley
4

Befolgen Sie die Build-Anweisungen ( Googles V8-Build-Dokumente ) für Ihr System.

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

Ich habe in meinem .bash_profile einen Alias ​​erstellt, um den Aufruf der Shell zu erleichtern.

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

Wenn Sie v8 an der CLI eingeben (in einem neuen Terminal oder einer neuen Shell - um Ihr Bash-Profil neu zu laden), erhalten Sie die v8-Shell. JavaScript an der Eingabeaufforderung! :) :)

Joe Johnson
quelle
3

Wenn Sie ArchLinux verwenden, können Sie pacman -S v8es installieren. Dann verwenden Sie d8, um es in Ihrer Shell zu starten. Geniesse es.

alswl
quelle
1
Das scheint auf der AUR zu sein und kann daher nicht mit Pacman installiert werden.
Colliot
3

Wenn Sie Ihren Javascript-Quellcode mit der v8- Engine oder einer anderen Version davon ausführen möchten , können Sie das Befehlszeilentool jsvu verwenden. Es wird entwickelt und gepflegt von Google - Ingenieure und außerdem bietet es die Funktion der Installation andere Javascript - Motoren abgesehen von v8 , wie Spidermonkey , chakracore , Javascript und xs .

sgeorgiou
quelle
2

Wenn Sie V8 einbetten möchten, bauen Sie es auf jeden Fall und spielen Sie mit "d8".

Wenn Sie andererseits nicht vorhaben, V8 zu erweitern oder als optional zu behandeln, verwenden Sie einfach Node.JS. Kümmere dich nicht um reinen V8.

Node.js verfügt über wirklich umfangreiche E / A, Erweiterungen, Bibliotheken (wie Perl CPAN, Python Eggs, Ruby Gems) und Community.

AR
quelle
Sie müssen node.js nicht verwenden, es ist nur ein Wrapper und eine zusätzliche Abhängigkeit.
B01