有没有办法编译node.js源文件?

时间:2011-05-26 21:52:39

标签: node.js compilation

有没有办法编译node.js应用程序?

7 个答案:

答案 0 :(得分:48)

我可能很晚但你可以使用“nexe”模块在一个可执行文件中编译nodejs +你的脚本:https://github.com/crcn/nexe

答案 1 :(得分:16)

Node.js运行在V8 Javascript引擎之上,它本身通过将javascript代码编译为本机代码来优化性能......所以没有理由真正编译那么,是吗?

https://developers.google.com/v8/design#mach_code

答案 2 :(得分:11)

EncloseJS

你得到一个没有来源的全功能二进制文件。

Native modules also supported.(必须放在同一个文件夹中)

使用V8内部编译器在编译时将JavaScript代码转换为本机代码。因此,您的源不需要执行二进制文件,也不会打包它们。

完全优化的本机代码只能在运行时根据客户端的机器生成。没有这些信息,EncloseJS只能生成“未经优化的”代码。它比NodeJS慢大约2倍。

此外,node.js运行时代码放在可执行文件中(连同您的代码),以便在运行时为您的应用程序支持节点API。

用例:

  • 制作没有来源的应用程序的商业版本。
  • 制作没有来源的应用的演示/评估/试用版。
  • 制作某种自解压存档或安装程序。
  • 使用node-thrust创建一个封闭的源GUI应用程序。
  • 无需安装node和npm来部署已编译的应用程序。
  • 无需通过npm install下载数百个文件来部署您的应用程序。将其部署为单个独立文件。
  • 将您的资源放入可执行文件中,使其更具可移植性。 针对新节点版本测试您的应用程序而不安装它。

答案 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。