NodeJs VM - 将已编译的代码保存到磁盘?

时间:2012-06-16 05:10:56

标签: node.js v8

来自http://nodejs.org/api/vm.html

  

JavaScript代码可以立即编译和运行,也可以编译,保存并稍后运行。 [...]返回的脚本未绑定到任何全局对象。它在每次运行之前绑定,仅用于该运行。

然后在API中,没有返回任何字节的方法,没有。只是一个“脚本”对象。

所以,在我礼貌地把这张桌子拆下来之前,有没有办法让我真正保存编译后的脚本到磁盘?我认为它只是普通的原始二进制数据,可能是语法树或其他任何东西。

1 个答案:

答案 0 :(得分:4)

您引用的函数是javascript在新上下文中运行的javascript(因此它可以是安全的,具有新功能等)...而不是保存预编译的二进制文件......

如果您需要有关如何实际重新加载预编译脚本的详细信息,可以查看node.js源代码。 “node.js”文件本身是预编译的,并作为二进制文件加载(如果使用此选项构建它)。这样做会使节点启动得更快。

然而,您应该记住的是,除非您使用将运行/停止/运行/停止...等的V8库来构思特定进程(例如node.js),否则它没有什么优势。原因是,V8库只会编译您的脚本一次 - 然后每次都会将其作为机器代码执行,或者只要V8库正在运行。

预编译和加载为二进制文件会带来一些明显的缺点,包括使程序体系结构依赖(甚至跨x86 32位对x86_64)等等。所以 - 这可能不是最好的设计决定。

相关问题