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.