Использование `d8`
d8
— это собственная оболочка разработчика V8.
d8
полезен для локального запуска JavaScript или отладки изменений, внесенных в V8. Сборка V8 с использованием GN для x64 создает бинарный файл d8
в out.gn/x64.optdebug/d8
. Вы можете вызвать d8
с аргументом --help
для получения более подробной информации об использовании и флагах.
Печать в командной строке
Вывод результатов, вероятно, будет очень важен, если вы планируете использовать d8
для запуска файлов JavaScript, а не интерактивно. Это можно сделать с помощью console.log
:
$ cat test.js
console.log('Привет, мир!');
$ out.gn/x64.optdebug/d8 test.js
Привет, мир!
d8
также имеет глобальную функцию print
, которая делает то же самое. Однако предпочтительнее использовать console.log
, так как он также работает в веб-браузерах.
Чтение ввода
С помощью read()
вы можете сохранить содержимое файла в переменной.
d8> const license = read('LICENSE');
d8> license
"Эта лицензия применяется ко всем частям V8, которые не являются внешними
библиотеками. Внешние библиотеки, используемые в V8, это:
… (и так далее)"
Используйте readline()
для интерактивного ввода текста:
d8> const greeting = readline();
Добро пожаловать
d8> greeting
"Добро пожаловать"
Загрузка внешних скриптов
load()
запускает другой JavaScript-файл в текущем контексте, что означает, что вы сможете использовать все объявленное в этом файле.
$ cat util.js
function greet(name) {
return 'Привет, ' + name;
}
$ d8
d8> load('util.js');
d8> greet('Мир!');
"Привет, Мир!"
Передача флагов в JavaScript
Возможно сделать аргументы командной строки доступными для вашего JavaScript-кода во время выполнения с помощью d8
. Просто передайте их после --
в командной строке. Затем вы сможете получить доступ к ним на верхнем уровне вашего скрипта, используя объект arguments
.
out.gn/x64.optdebug/d8 -- привет
Теперь вы можете получить массив аргументов, используя объект arguments
:
d8> arguments[0]
"привет"
Дополнительные ресурсы
Руководство по D8 от Кевина Энниса содержит очень полезную информацию о работе с V8 с использованием d8
.
Происхождение имени d8
: в самом начале V8 имел "пробную оболочку", цель которой была продемонстрировать, как V8 может быть встроен для создания оболочки JavaScript. Она была намеренно минималистичной и называлась просто "оболочка". Вскоре после этого была добавлена "оболочка разработчика" с более удобными функциями, чтобы помочь разработчикам в их ежедневной работе, и ей тоже нужно было имя. Оригинальная причина выбора имени "d8" утеряна в истории; название закрепилось, потому что "eveloper" — это 8 пропущенных символов, так что "d8 shell" имеет смысл как сокращение, и также хорошо вписывается в "V8" как название проекта.