Met*_*l3d 52

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

  • 请注意:这仅适用于Linux/Mac,而不适用于Windows. (5认同)
  • 它现在在Windows上受支持,但它依赖于python,默认情况下大多数Windows用户都没有安装. (5认同)
  • 只有编译Windows机器才需要Python和Visual Studio.客户端计算机(运行"已编译的"Node.js脚本的那些)没有这些依赖项. (3认同)

Tor*_*r P 16

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

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

  • 通过编译JavaScript源代码,您将获得某种形式的二进制或字节代码(例如)作为回报,如果您不想透露源代码,这是很好的.那有意义吗? (31认同)
  • 编译代码比混淆更好.如果你想分发你的程序,给别人一个二进制文件比告诉他们安装节点更容易. (28认同)
  • @Mahdi 将某些东西变成二进制文件并不能阻止人们对其进行逆向工程。这并不难。 (3认同)
  • @SvenSlootweg 当然,但你最好聘请一名开发人员来编写相同的代码,而不是聘请一名黑客将 CPU 指令集的音调逆向工程为合理的 JavaScript 源代码。 (3认同)
  • @Mahdi 对未经许可的人使用您的代码的保护主要是法律性质的,而不是技术性质的。在实践中,您不太可能从混淆编译中获得任何好处 - 另一方面,它几乎肯定会给“合法”用户带来不便。换句话说:不要这样做。 (2认同)

Rob*_*cks 12

EncloseJS.

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

还支持本机模块.(必须放在同一个文件夹中)

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

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

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

用例:

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

  • 这是封闭的来源.俄罗斯僵尸网络欢迎您的应用程序. (4认同)
  • 这是一个好主意,但是我运行了一些计算基准测试,不幸的是,使用Enclose的代码比使用Node慢大约5倍,所以除非性能提高,否则这个IMHO会超过目的.在Win8.1和节点5(64位exe)上使用-x标志. (4认同)
  • 如果您没有许可证(每月9美元),您的程序将添加一条令人讨厌的输出消息,说要购买许可证! (2认同)

小智 7

这里有一个答案:安全分发NodeJS应用程序.Raynos说:V8允许你预编译JavaScript.


Ray*_*nos 5

您可以使用Closure 编译器来编译您的 javascript。

您还可以使用CoffeeScript将您的 CoffeeScript 编译为 JavaScript。

你想通过编译达到什么目的?

编译任意非阻塞 JavaScript 的任务对于 C 来说听起来非常令人畏惧。

编译为 C 或 ASM 确实无法获得那么快的速度。如果您希望通过子进程将速度增益卸载到 C 程序。

  • OP 可能想要获取一个 Node.js 应用程序并将其编译为本机代码。 (11认同)

归档时间:

查看次数:

110286 次

最近记录:

10 年,2 月 前