有没有办法编译node.js应用程序?
答案 0 :(得分:48)
我可能很晚但你可以使用“nexe”模块在一个可执行文件中编译nodejs +你的脚本:https://github.com/crcn/nexe
答案 1 :(得分:16)
Node.js运行在V8 Javascript引擎之上,它本身通过将javascript代码编译为本机代码来优化性能......所以没有理由真正编译那么,是吗?
答案 2 :(得分:11)
你得到一个没有来源的全功能二进制文件。
Native modules also supported.(必须放在同一个文件夹中)
使用V8内部编译器在编译时将JavaScript代码转换为本机代码。因此,您的源不需要执行二进制文件,也不会打包它们。
完全优化的本机代码只能在运行时根据客户端的机器生成。没有这些信息,EncloseJS只能生成“未经优化的”代码。它比NodeJS慢大约2倍。
此外,node.js运行时代码放在可执行文件中(连同您的代码),以便在运行时为您的应用程序支持节点API。
用例:
答案 3 :(得分:7)
这里有一个答案:Secure distribution of NodeJS applications。 Raynos说:V8允许你预编译JavaScript。
答案 4 :(得分:4)
您可以使用Closure compiler来编译您的JavaScript。
您还可以使用CoffeeScript将您的coffeescript编译为javascript。
您希望通过编译实现什么目标?
编译任意非阻塞JavaScript的任务说,C听起来非常令人生畏。
通过编译到C或ASM,确实没有那么快的速度。如果你想通过子进程将速度增益卸载计算到C程序。
答案 5 :(得分:0)
现在这可能包含的不仅仅是您需要的内容(甚至可能不适用于非图形环境中的命令行应用程序,我也不知道),但有nw.js。 它是Blink(即Chromium / Webkit)+ io.js(即Node.js)。
您可以使用node-webkit-builder为Linux,OS X和Windows构建本机可执行二进制文件。
如果你想要一个GUI,这是一个巨大的优势。您可以使用Web技术构建一个。
如果您不在,请在"node-main"
中指定package.json
(可能"window": {"show": false}
,但可能只有node-main
而不是main
)
我还没有试图以这种方式使用它,只是把它扔出去作为一种可能性。我可以说它对于非图形Node.js应用程序肯定不是理想的解决方案。
答案 6 :(得分:-5)
javascript没有像Java / C这样的编译器(例如,你可以将它与PHP之类的语言进行比较)。如果你想编写已编译的代码,你应该阅读关于addons的部分并学习C.虽然这很复杂,我认为你不需要这样做,而只是写javascript。