有没有一种方法可以编译Node.js应用程序?
有没有一种方法可以编译Node.js应用程序?
可能我来得有些晚了,但您可以使用“nexe”模块将Node.js和您的脚本编译为一个可执行文件:https://github.com/crcn/nexe
编辑2021:Nexe的最新版本发布于2017年,开发似乎已经放缓,因此这些日子还应该考虑来自Vercel的更广泛使用的替代品:pkg
Node.js运行在V8 JavaScript引擎之上,该引擎通过将JavaScript代码编译成本地代码来优化性能...因此,真的没有编译的理由了,对吧?
您可以获得一个完全功能的二进制文件,而无需源代码。
本地模块也受到支持。(必须放置在相同的文件夹中)
JavaScript 代码在编译时使用 V8 内部编译器转换为本地代码。因此,在执行二进制文件时不需要源代码,并且它们不会被打包。
只有基于客户端机器的信息才能生成完美优化的本地代码。没有这些信息,EncloseJS 只能生成“未优化”的代码。它的运行速度约比 NodeJS 慢2倍。
此外,node.js 运行时代码与您的代码一起放在可执行文件中,以支持应用程序在运行时的 node API。
使用案例:
现在这可能包含了你不需要的内容(而且在非图形环境下的命令行应用程序可能无法工作,我不知道),但是有nw.js。 它是Blink(即Chromium/Webkit)+ io.js(即Node.js)。
您可以使用node-webkit-builder为Linux、OS X和Windows构建本机可执行二进制文件。
如果您想要一个GUI,那就是一个巨大的加分项。您可以使用Web技术构建一个GUI。
如果不需要GUI,请在package.json
中指定"node-main"
(可能还需要"window": {"show": false}
,尽管只有一个node-main
而没有main
也可以)
我没有尝试过以这种方式使用它,只是抛出一个可能性。我可以说,对于非图形化的Node.js应用程序,这肯定不是一个理想的解决方案。
JavaScript并没有像Java/C那样的编译器(你可以将其与PHP等语言进行比较)。如果你想编写编译代码,你应该阅读关于addons的部分并学习C语言。虽然这相当复杂,但我认为你不需要这样做,而是直接编写JavaScript即可。