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

时间:2014-05-14 08:17:21

标签: javascript node.js compiler-construction

我可以使用任何软件编译nodejs程序吗?

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

而且我想知道nodejs是否会在编译时执行得更快,因为它已经异步?

3 个答案:

答案 0 :(得分:3)

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

要在node.js上下文中打包您的javascript以进行分发,请构建一个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)

答案 1 :(得分:3)

v8无法做到这一点,它只有JIT选项。可以使用v8制作“快照”,但它与编译和node.js不完全相同,不支持此功能(也可能产生较慢的代码)。此外,您的所有代码都可以使用toString()个函数。

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

答案 2 :(得分:0)

没有办法'编译'nodejs程序,因为javascript是在运行时解释的。

但是,如果您想保护代码,可以使用类似Uglify JS的内容来降低javascript的可读性。但是,这不会阻碍人们改变您的代码。