使用 d8
d8
是 V8 自家的開發人員 shell。
d8
可用於在本地執行一些 JavaScript 或偵錯您對 V8 所做的變更。使用 GN 建置 x64 版的 V8 會在 out.gn/x64.optdebug/d8
中產生 d8
二進位檔。您可以使用 --help
參數呼叫 d8
,以取得更多關於用法和標記的資訊。
列印至命令列 #
如果您計畫使用 d8
執行 JavaScript 檔案,而不是互動式執行,那麼列印輸出可能會非常重要。這可以使用 console.log
來達成
$ cat test.js
console.log('Hello world!');
$ out.gn/x64.optdebug/d8 test.js
Hello world!
d8
也附帶一個執行相同功能的 print
全域函式。然而,由於 console.log
也適用於網路瀏覽器,因此它比 print
更受青睞。
讀取輸入 #
使用 read()
,您可以將檔案內容儲存在變數中。
d8> const license = read('LICENSE');
d8> license
"This license applies to all parts of V8 that are not externally
maintained libraries. The externally maintained libraries used by V8
are:
… (etc.)"
使用 readline()
互動式輸入文字
d8> const greeting = readline();
Welcome
d8> greeting
"Welcome"
載入外部指令碼 #
load()
在目前的內容中執行另一個 JavaScript 檔案,表示您之後可以存取該檔案中宣告的任何內容。
$ cat util.js
function greet(name) {
return 'Hello, ' + name;
}
$ d8
d8> load('util.js');
d8> greet('World!');
"Hello, World!"
將標記傳遞至 JavaScript #
使用 d8
,可以在執行階段讓您的 JavaScript 程式碼使用命令列參數。只要在命令列中將它們傳遞至 --
之後即可。然後,您可以在指令碼的最上層使用 arguments
物件存取它們。
out.gn/x64.optdebug/d8 -- hi
您現在可以使用 arguments
物件存取參數陣列
d8> arguments[0]
"hi"
更多資源 #
Kevin Ennis 的 D8 指南 有許多關於使用 d8
探索 V8 的好資訊。
d8
名稱的背景:在早期,V8 有個「範例 shell」,其目的是示範如何嵌入 V8 以建置 JavaScript shell。它刻意設計得極簡,且僅稱為「shell」。不久之後,便新增了一個「開發人員 shell」,其中有更多便利功能,以協助開發人員進行日常工作,而且它也需要一個名稱。當初選擇「d8」作為名稱的原始原因已不可考;它之所以會被採用,是因為「eveloper」省略了 8 個字元,因此「d8 shell」作為縮寫是有道理的,而且也與專案名稱「V8」相得益彰。