我可以使用任何软件编译nodejs程序吗?
我想编译nodejs代码的原因是为了使其安全可分发。 例如,桌面应用程序等
而且我想知道nodejs是否会在编译时执行得更快,因为它已经异步?
答案 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规范(eval
,new Function
等)。
答案 2 :(得分:0)
没有办法'编译'nodejs程序,因为javascript是在运行时解释的。
但是,如果您想保护代码,可以使用类似Uglify JS的内容来降低javascript的可读性。但是,这不会阻碍人们改变您的代码。