编译nodejs代码以实现更安全的分发

问题描述 投票:0回答:5

有什么软件可以用来编译nodejs程序吗?

我想编译nodejs代码的原因是为了使其可以安全地分发。 例如桌面应用程序等。

我还想知道如果编译nodejs是否会执行得更快,因为它已经是异步的了?

javascript node.js compiler-construction
5个回答
4
投票

Javascript 不是编译语言,Node.js 是 Javascript。它将在运行时执行和解释。您可以使用 grunt.js 等工具处理您的 javascript,例如 lint-test 并丑化它,但要小心,不要破坏 npm 系统,因为它基于某些约定。

要打包您的 JavaScript 以在 Node.js 上下文中分发,请构建一个 npm 模块。 https://www.npmjs.org/doc/developers.html

将 javascript 分发到桌面客户端:记住它是 Javascript,需要在 Javascript VM 中执行。因此,要拥有一些 UI,您需要在浏览器中运行它,或者您需要一些 webkit 编译的 dll 来运行您的代码... 像这样的东西... http://www.tidesdk.org/

您还可以使用:http://github.com/rogerwang/node-webkit(感谢@edi9999)


3
投票

v8 无法做到这一点,它只有 JIT 选项。可以使用 v8 制作“快照”,但它与编译并不完全相同,并且 Node.js 不支持此功能(而且它可能会生成较慢的代码)。此外,您的所有代码都可以通过

toString()
函数使用。

您可能对 JXcore 项目感兴趣。它是节点的一个分支,据我所知有一些代码保护的解决方案。该项目的目标之一是开发 javascript-to-LLVM 编译器。当然它不能完全支持 ES 规范(

eval
new Function
等)。


0
投票

无法“编译”nodejs 程序,因为 JavaScript 是在运行时解释的。

但是,如果你想保护你的代码,你可以使用类似 Uglify JS 的东西来降低 javascript 的可读性。但是,这不会妨碍人们更改您的代码。


0
投票

最接近实现目标的方法是创建一个自动执行的 Javascript 字节码包装器。

执行此操作的项目是

pkg

它以某种方式从 Javascript 创建一个独立的二进制可执行文件,包括模块依赖项和资产文件,并生成一个独立的可执行文件。

安装和使用简单:

$ npm install -g pkg
$ pkg index.js -o my-program
$ ./my-program

生成的二进制文件似乎包含nodejs字节码。看来可以交叉编译了。


0
投票

从 21+ 版本开始,nodejs 已经内置了独立运行应用程序的功能。

https://nodejs.org/api/single-executable-applications.html

© www.soinside.com 2019 - 2024. All rights reserved.