가능합니다.이 branch (0.8.18 기준)을 사용하고 'deps/v8/src/extra-snapshot.js'에 넣은 js 코드는 머신 코드로 컴파일됩니다. 정상적인 기본 개체 초기화의 일부로 v8에 포함되었습니다. 제품을 전개 할 각 플 '폼마다 nodej를 빌드해야합니다.
스냅 샷 코드는 v8 초기화 초기에 실행되며 '모듈 본문'의 기본 개체에 액세스 할 수 없습니다. 당신이 할 수있는 일은 나중에 호출 될 전역 초기화 함수 안에 모든 코드를 넣는 것입니다. 예는 :
// 'this' points to the same as the object referenced by
// 'global' in normal nodejs code.
// at this point it has nothing defined in it, so in order to use
// global objects a reference to it is needed.
var global = this;
global.initialize = function() {
// You have to define all global objects you use in your code here;
var Array = global.Array;
var RegExp = global.RegExp;
var Date = global.Date;
// See ECMAScript v5 standard global objects for more
// Also define nodejs global objects:
var console = global.console;
var process = global.process;
// Your code goes embedded here
};
또한 당신이 하나 랩에서 모든 파일을 결합하는 스크립트를 작성해야합니다, 이것은 전체 코드는 하나의 파일에 정의되어 있다고 가정, 그래서 당신의 프로젝트가 nodejs 모듈 시스템을 사용하는 경우 (필요) 클로저의 각 파일은 코드를 속여 일반 nodejs 모듈이라고 생각하게합니다. 아마도 각 모듈 클로저는 require 함수를 노출시킬 것이고,이 함수는 표준 'global.require'에 위임 할시기를 결정하거나 다른 임베디드 모듈에서 반출을 리턴해야 할 것이다. javascript 모듈 시스템이 어떻게 구현되는지 확인하십시오 (requirejs가 좋은 예입니다).
이렇게하면 네이티브 코드에 대한 스택 추적이 표시되지 않으므로 코드를 디버그하기가 어려워집니다.
UPDATE : V8 게으른 편집을 선호하기 때문에
에도 사용 V8 코드를 스냅 샷은 Node.js를 바이너리에 포함됩니다. 자세한 내용은 this을 참조하십시오.
[Node.js 코드 보호] (http://stackoverflow.com/questions/8040423/node-js-code-protection) 및 [node.js 소스 파일을 컴파일하는 방법이 있습니까?]를 참조하십시오. http://stackoverflow.com/questions/6145561/is-there-a-way-to-compile-node-js-source-files). 쉽게 가능하지 않습니다. –
가지고있는 것은 [기술적 인 문제가 아닙니다] (http://programmers.stackexchange.com/q/66616/9097)입니다. – josh3736
http://groups.google.com/group/nodejs/browse_thread/thread/98f21cab99878a13 –