2012-06-16 1 views
4

: 컴파일 및 실행 즉시 또는 컴파일 , 저장하고, 나중에 실행할 수있는 자바 스크립트 코드NodeJs VM - 컴파일 된 코드를 디스크에 저장 하시겠습니까? <a href="http://nodejs.org/api/vm.html" rel="nofollow">http://nodejs.org/api/vm.html</a>에서

. [...] 반환 된 스크립트 은 어떤 글로벌 개체에 바인딩되지 않습니다. 각 실행 전에 바인딩이 실행됩니다.

그리고 나서 API에서 바이트를 반환하는 메서드는 없습니다. 그냥 "스크립트"개체.

내 팔 아래에이 책상을 정중하게 찢기 전에 실제로 어떤 식 으로든 할 수 있습니까? 디스크에 컴파일 된 스크립트가 있습니까? 난 그냥 원시 이진 데이터, 아마도 구문 트리 또는 뭐든간에 그것은 그림. 당신이 참조

+0

왜 디스크에 저장해야합니까? 그걸로 무엇을하려고합니까? 모든 자바 스크립트가로드시 메모리로 해석되고 엔진이 실제로 명령 처리를 위해 파일을 다시 읽지 않는다는 것을 알게됩니다. 컴파일은 읽음입니다. – jcolebrand

+1

사실 저는 이진 결과를 가까운 소스 nodejs 앱으로 판매 할 계획이었습니다. –

+0

Ooooh, 그럼, 그 점을 분명히 해줘서 고마워. 왜냐하면 우리가 실제로했던 것처럼 (우리가했던 것처럼) 우리가 실제로 우리의 답을 우리의 요구에 맞게 맞출 수 있기 때문이다. 나는 "Unsung Hero"와 1400 rep에 금색 배지를 가진 사람에게서 더 많은 것을 기대했다. – jcolebrand

답변

4

기능은 훨씬 미리 컴파일 된 바이너리 ...

을 저장하지 ... (등, 새로운 기능을 가지고, 그래서 안전 할 수) 새로운 맥락에서 자바 스크립트에 의해 실행되는 자바 스크립트입니다

미리 컴파일 된 스크립트를 실제로 다시로드하는 방법에 대한 자세한 내용은 node.js 소스를 참조하십시오. 'node.js'파일 자체는 미리 컴파일되어 바이너리로로드됩니다 (이 옵션을 사용하여 빌드 한 경우). 이렇게하면 노드를 더 빠르게 시작할 수 있습니다.

그러나 실행/중지/실행/중지 할 V8 라이브러리를 사용하여 특정 프로세스 (예 : node.js)를 생각하지 않는 한 유의해야 할 사항은 다음과 같습니다. 이유는 V8 라이브러리는 스크립트를 한 번만 컴파일하고, 그 후에 매번 또는 V8 라이브러리가 실행되는 동안 기계 코드로 실행합니다.

프리 컴파일 및 바이너리로로드하면 프로그램 아키텍처를 (x86 32 비트 대 x86_64까지) 종속성 등을 포함하여 몇 가지 중요한 단점이 있습니다. 그래서 - 이것이 최고의 디자인 결정이 아닐 수도 있습니다.

+1

나도 너처럼, 이것이 OP가 묻고있는 것이기를 바랍니다. 지금 나는이 대답을 처음 입력하지 않은 슬픈 팬다입니다. – jcolebrand