본문으로 건너뛰기

`d8` 사용하기

d8는 V8의 자체 개발 셸입니다.

d8는 JavaScript를 로컬에서 실행하거나 V8에 대한 변경 사항을 디버깅하는 데 유용합니다. GN을 사용하여 V8 빌드하기는 x64에 out.gn/x64.optdebug/d8d8 바이너리를 출력합니다. 사용법 및 플래그에 대한 자세한 정보를 보려면 --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
"이 라이센스는 외부에서 유지 관리되지 않는 V8의 모든 부분에 적용됩니다. V8에서 사용되는 외부 유지 관리 라이브러리는:
(등등)"

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!"

자바스크립트에 플래그 전달하기

윈도우에서는 d8를 사용하여 명령줄 인수를 자바스크립트 코드에 런타임에서 사용할 수 있습니다. 명령줄에서 -- 뒤에 인수를 전달하면 됩니다. 그런 다음 스크립트의 최상위에서 arguments 객체를 사용하여 액세스할 수 있습니다.

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

이제 arguments 객체를 사용하여 인수 배열에 액세스할 수 있습니다:

d8> arguments[0]
"hi"

추가 리소스

Kevin Ennis의 D8 가이드d8를 사용하여 V8을 탐색하는 것에 대한 매우 좋은 정보를 제공합니다.

d8라는 이름의 배경: 초기 단계에서 V8에는 “샘플 셸”이 있었으며, 이는 V8이 JavaScript 셸을 개발하는 데 어떻게 임베드될 수 있는지를 보여주는 것이 목적이었습니다. 그것은 의도적으로 최소한이었으며 단순히 “셸”이라고 불렸습니다. 이후 개발 셸이 추가되었으며, 개발자들이 일상적인 작업을 돕는 더 많은 편리 기능이 포함되었습니다. 초기에는 왜 “d8”이라는 이름이 선택되었는지에 대한 이유는 역사의 뒤안길로 사라졌습니다. 그러나 “eveloper”에서 8개의 문자가 생략된 것이므로 “d8 셸”은 축약형으로 합리적이며 프로젝트 이름 “V8”과 잘 맞습니다.