使用Google的V8引擎,将JavaScript编译成本地代码并保存为二进制文件,在任何机器上都可以通过我的软件环境随时执行,这真的可能吗?
使用Google的V8引擎,将JavaScript编译成本地代码并保存为二进制文件,在任何机器上都可以通过我的软件环境随时执行,这真的可能吗?
您可以使用V8快照功能来预编译代码。这仍然意味着您必须运行完整版本的V8才能加载快照(即,您不会得到独立的本机代码,它需要在V8 VM中运行),因此您所节省的只是编译时间。 另外,快照代码的质量不一定像JIT代码那样好,因为JIT代码可以使用例如SSE2 / SSE3之类的指令集(如果可用),而快照不能假设这些。
相反,可以使用.NET JavaScript/JScript编译器创建.NET exe,然后使用Mono ahead-of-time compiler将.NET exe转换为本地exe。
pkg
项目来实现此功能。$ npm install -g pkg
$ pkg index.js -o my-program
$ ./my-program
我理解这个二进制文件包含了nodejs的字节码。同时,它似乎可以进行交叉编译。
注意:我也尝试过ncc
和nexe
,但我觉得它们不如这个工具有用。ncc
只是创建了一个自包含的Javascript文件,而nexe
在我尝试使用时遇到了一个Python错误。