5

http://nodejs.org/api/vm.htmlから:

JavaScriptコードは、コンパイルしてすぐに実行することも、コンパイルして保存し、後で実行することもできます。[...]返されたスクリプトは、どのグローバルオブジェクトにもバインドされていません。各実行の前に、その実行のためだけにバインドされます。

そして、APIでは、バイトを返すメソッドはなく、何も返しません。単なる「スクリプト」オブジェクト。

それで、私が私の腕の下でこの机を丁寧に壊す前に、私が実際にコンパイルされたスクリプトをディスクに保存することができる方法はありますか?私はそれが単なる普通の生のバイナリデータ、多分構文木か何かだと思います。

4

1 に答える 1

4

参照する関数は、新しいコンテキストでjavascriptによって実行されるjavascript用です(したがって、安全で、新しい機能を備えているなど)...プリコンパイルされたバイナリをそれほど節約することはありません...

プリコンパイルされたスクリプトを実際にリロードする方法の詳細が必要な場合は、node.jsソースを参照してください。' node.js 'ファイル自体は、プリコンパイルされ、バイナリとしてロードされます(このオプションを使用してビルドした場合)。そうすることで、ノードの起動が速くなります。

ただし、実行/停止/実行/停止するV8ライブラリを使用する特定のプロセス(node.jsなど)を考えない限り、これにはほとんど利点がないことを覚えておく必要があります。理由は次のとおりです。 、V8ライブラリはスクリプトを1回だけコンパイルし、その後は毎回、またはV8ライブラリが実行されている限り、マシンコードとしてスクリプトを実行します。

事前コンパイルとバイナリとしてのロードには、プログラムアーキテクチャを依存させる(x86 32ビットとx86_64の間でも)など、いくつかの重大な欠点があります。したがって、これは最良の設計上の決定ではない可能性があります。

于 2012-06-16T05:26:26.990 に答える