有什么软件可以用来编译nodejs程序吗?
我想编译nodejs代码的原因是为了使其可以安全地分发。 例如桌面应用程序等。
我还想知道如果编译nodejs是否会执行得更快,因为它已经是异步的了?
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)
v8 无法做到这一点,它只有 JIT 选项。可以使用 v8 制作“快照”,但它与编译并不完全相同,并且 Node.js 不支持此功能(而且它可能会生成较慢的代码)。此外,您的所有代码都可以通过
toString()
函数使用。
您可能对 JXcore 项目感兴趣。它是节点的一个分支,据我所知有一些代码保护的解决方案。该项目的目标之一是开发 javascript-to-LLVM 编译器。当然它不能完全支持 ES 规范(
eval
、new Function
等)。
无法“编译”nodejs 程序,因为 JavaScript 是在运行时解释的。
但是,如果你想保护你的代码,你可以使用类似 Uglify JS 的东西来降低 javascript 的可读性。但是,这不会妨碍人们更改您的代码。
最接近实现目标的方法是创建一个自动执行的 Javascript 字节码包装器。
pkg
它以某种方式从 Javascript 创建一个独立的二进制可执行文件,包括模块依赖项和资产文件,并生成一个独立的可执行文件。
安装和使用简单:
$ npm install -g pkg
$ pkg index.js -o my-program
$ ./my-program
生成的二进制文件似乎包含nodejs字节码。看来可以交叉编译了。
从 21+ 版本开始,nodejs 已经内置了独立运行应用程序的功能。