【发布时间】:2011-09-02 23:39:29
【问题描述】:
有没有办法编译node.js 应用程序?
【问题讨论】:
-
一个很好的工具列表在这里:stackoverflow.com/a/12486874/32679
-
Deno 已内置此功能,因此在从头开始项目时使用 Deno 而不是 node.js 可能是一个不错的举措。
标签: node.js compilation
有没有办法编译node.js 应用程序?
【问题讨论】:
标签: node.js compilation
您可以使用Closure compiler 来编译您的javascript。
您也可以使用CoffeeScript 将您的coffeescript 编译为javascript。
你想通过编译实现什么?
编译任意非阻塞 JavaScript 的任务可以说,C 听起来非常艰巨。
编译成 C 或 ASM 并不能提高速度。如果您想通过子进程将计算速度卸载到 C 程序。
【讨论】:
javascript 没有像 Java/C 这样的编译器(您可以将其更多地与 PHP 等语言进行比较)。如果你想编写编译代码,你应该阅读关于addons 的部分并学习 C。虽然这相当复杂,我认为你不需要这样做,而只需编写 javascript。
【讨论】:
Node.js 运行在 V8 Javascript 引擎之上,该引擎本身通过将 javascript 代码编译为本机代码来优化性能......所以真的没有理由编译,是吗?
【讨论】:
这里有一个答案:Secure distribution of NodeJS applications。 Raynos 说:V8 允许你预编译 JavaScript。
【讨论】:
我可能很晚了,但您可以使用“nexe”模块将 nodejs + 您的脚本编译到一个可执行文件中:https://github.com/crcn/nexe
EDIT 2021: Nexe 的最新版本是 2017 年发布的,看来开发速度已经放缓,因此这些天也应该考虑使用 Vercel 更广泛使用的替代品:pkg
【讨论】:
现在这可能包括超出您需要的内容(甚至可能不适用于非图形环境中的命令行应用程序,我不知道),但有nw.js。 它是 Blink(即 Chromium/Webkit)+ io.js(即 Node.js)。
您可以使用node-webkit-builder 为 Linux、OS X 和 Windows 构建本机可执行二进制文件。
如果您想要一个 GUI,这是一个巨大的优势。您可以使用 Web 技术构建一个。
如果不这样做,请在 package.json 中指定 "node-main"(可能还有 "window": {"show": false},尽管可能只使用 node-main 而不是 main)
我没有尝试以这种方式使用它,只是把它作为一种可能性扔出去。我可以说它肯定不是非图形 Node.js 应用程序的理想解决方案。
【讨论】:
你得到一个没有源的功能齐全的二进制文件。
Native modules also supported.(必须放在同一个文件夹)
JavaScript 代码在编译时使用 V8 内部编译器转换为本机代码。因此,您的源代码不需要执行二进制文件,并且它们没有被打包。
完美优化的本机代码只能在运行时基于客户端机器生成。如果没有这些信息,EncloseJS 只能生成“未优化”的代码。它的运行速度比 NodeJS 慢大约 2 倍。
此外,node.js 运行时代码(与您的代码一起)被放入可执行文件中,以在运行时支持您的应用程序的节点 API。
用例:
【讨论】: