5

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

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

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

所以,在我礼貌地拆掉我怀里的这张桌子之前,有什么办法可以真正将编译好的脚本保存到磁盘上?我认为它只是普通的原始二进制数据,可能是语法树或其他。

4

1 回答 1

4

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

如果您想了解如何实际重新加载预编译脚本的详细信息,可以查看 node.js 源代码。' node.js ' 文件本身被预编译并加载为二进制文件(如果您使用此选项构建它)。这样做,它使节点启动更快。

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

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

于 2012-06-16T05:26:26.990 回答