Zum Hauptinhalt springen

Verwendung von `d8`

d8 ist die eigene Entwicklershell von V8.

d8 ist nützlich, um JavaScript lokal auszuführen oder Änderungen, die Sie an V8 vorgenommen haben, zu debuggen. V8 mit GN bauen für x64 erstellt eine d8-Binärdatei in out.gn/x64.optdebug/d8. Sie können d8 mit dem Argument --help aufrufen, um weitere Informationen über die Nutzung und Flags zu erhalten.

In die Kommandozeile schreiben

Die Ausgabe auf die Konsole ist wahrscheinlich sehr wichtig, wenn Sie d8 verwenden möchten, um JavaScript-Dateien auszuführen anstatt interaktiv zu arbeiten. Dies kann mit console.log erreicht werden:

$ cat test.js
console.log('Hello world!');

$ out.gn/x64.optdebug/d8 test.js
Hello world!

d8 enthält auch eine globale Funktion print, die dasselbe tut. Allerdings wird console.log gegenüber print bevorzugt, da es auch in Webbrowsern funktioniert.

Eingabe lesen

Mit read() können Sie den Inhalt einer Datei in einer Variablen speichern.

d8> const license = read('LICENSE');
d8> license
"Diese Lizenz gilt für alle Teile von V8, die keine extern gepflegten
Bibliotheken sind. Die extern gepflegten Bibliotheken, die von V8 verwendet werden, sind:
(usw.)"

Verwenden Sie readline(), um interaktiv Text einzugeben:

d8> const greeting = readline();
Willkommen
d8> greeting
"Willkommen"

Externe Skripte laden

load() führt eine weitere JavaScript-Datei im aktuellen Kontext aus, was bedeutet, dass Sie anschließend auf alles zugreifen können, was in dieser Datei deklariert wurde.

$ cat util.js
function greet(name) {
return 'Hallo, ' + name;
}

$ d8
d8> load('util.js');
d8> greet('Welt!');
"Hallo, Welt!"

Flags an JavaScript übergeben

Es ist möglich, Kommandozeilenargumente zur Laufzeit Ihrer JavaScript-Dateien mit d8 verfügbar zu machen. Übergeben Sie diese einfach nach -- auf der Kommandozeile. Sie können dann auf diese Argumente im obersten Niveau Ihres Skripts mit dem Objekt arguments zugreifen.

out.gn/x64.optdebug/d8 -- hallo

Sie können jetzt auf ein Array der Argumente mit dem Objekt arguments zugreifen:

d8> arguments[0]
"hallo"

Weitere Ressourcen

Kevin Ennis’s D8 Guide enthält wirklich gute Informationen über die Erkundung von V8 mit d8.

Hintergrund des Namens d8: Sehr früh hatte V8 eine „beispielhafte Shell“, deren Zweck es war, zu demonstrieren, wie V8 eingebettet werden kann, um eine JavaScript-Shell zu erstellen. Sie war absichtlich minimalistisch und wurde einfach „Shell“ genannt. Kurz darauf wurde eine „Entwicklershell“ mit mehr praktischen Funktionen hinzugefügt, um Entwicklern bei ihrer täglichen Arbeit zu helfen, und diese brauchte ebenfalls einen Namen. Der ursprüngliche Grund, weshalb „d8“ als Name gewählt wurde, ist in der Geschichte verloren; es setzte sich durch, weil „eveloper“ 8 ausgelassene Buchstaben sind, sodass „d8 shell“ als Abkürzung Sinn ergibt und auch gut zu „V8“ als Projektname passt.