Pular para o conteúdo principal

Usando `d8`

d8 é o próprio shell para desenvolvedores do V8.

d8 é útil para executar JavaScript localmente ou depurar alterações feitas no V8. Construindo o V8 usando GN para x64 gera um binário d8 em out.gn/x64.optdebug/d8. Você pode chamar d8 com o argumento --help para obter mais informações sobre uso e flags.

Imprimir na linha de comando

Imprimir saída provavelmente será muito importante se você planeja usar d8 para executar arquivos JavaScript em vez de interativamente. Isso pode ser feito usando console.log:

$ cat test.js
console.log('Olá mundo!');

$ out.gn/x64.optdebug/d8 test.js
Olá mundo!

d8 também possui uma função global print que faz a mesma coisa. No entanto, console.log é preferido em relação a print, já que funciona em navegadores web também.

Ler entrada

Usando read() você pode armazenar o conteúdo de um arquivo em uma variável.

d8> const license = read('LICENSE');
d8> license
"Esta licença se aplica a todas as partes do V8 que não são bibliotecas
mantidas externamente. As bibliotecas mantidas externamente usadas pelo V8
são:
(etc.)"

Use readline() para entrar texto interativamente:

d8> const greeting = readline();
Bem-vindo
d8> greeting
"Bem-vindo"

Carregar scripts externos

load() executa outro arquivo JavaScript no contexto atual, o que significa que você pode acessar qualquer coisa declarada nesse arquivo.

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

$ d8
d8> load('util.js');
d8> greet('Mundo!');
"Olá, Mundo!"

Passar flags para JavaScript

É possível tornar os argumentos da linha de comando disponíveis para o seu código JavaScript em runtime com d8. Apenas passe-os após -- na linha de comando. Você pode acessá-los no nível superior do seu script usando o objeto arguments.

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

Agora você pode acessar um array dos argumentos usando o objeto arguments:

d8> arguments[0]
"oi"

Mais recursos

Guia de D8 de Kevin Ennis tem informações muito boas sobre explorar o V8 usando d8.

História por trás do nome d8: muito cedo, o V8 tinha um “shell de amostra”, cujo propósito era demonstrar como o V8 poderia ser embutido para construir um shell JavaScript. Era intencionalmente minimalista e era chamado simplesmente de “shell”. Pouco depois, um “shell de desenvolvedor” foi adicionado com mais recursos convenientes para ajudar os desenvolvedores no trabalho diário, e também precisava de um nome. A razão original pela qual “d8” foi escolhido como nome perdeu-se na história; pegou porque “eveloper” são 8 caracteres omitidos, então “d8 shell” faz sentido como uma abreviação, e também combina bem com “V8” como o nome do projeto.