Перейти к основному содержимому

Использование `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" как название проекта.