将node.js应用程序打包为跨平台可执行文件,而不是桌面应用程序

时间:2018-02-22 17:40:08

标签: node.js electron node-webkit nwjs zeit-pkg

关于这个主题有很多问题,但它们似乎无法区分桌面或服务器端应用程序的可执行文件。我想我的第一个问题是:差异是什么?例如,Zeit / pkg表示它们是" node.js二进制编译器",而nwjs(以前称为node-webkit)表示它们是基于Chromium和node.js的#app运行时&# 34。

我尝试了zeit / pkg并且效果很好,但已经知道可以有performance issues,除非它已正确配置。我想确保选择合适的工具并遇到过nwjs。它似乎做了很多与pkg相同的东西,但有更多的追随者,以及更多的文档和强大的api。我可以像使用pkg一样使用nwjs作为服务器端可执行文件(即不使用桌面功能)吗?

这个answer声明nwjs"是一个选项,但它确实没有设置为执行服务器 - 客户端类型关系",但随后评论说" 34;您可以从node-webkit启动服务器,就像在Node.js中启动它一样。只是node-webkit提供了超越B / S架构的另一种方式"。

那么,nwjs有效地与pkg相同,还是根本不同?

我意识到还有Electron,它表示构建跨平台桌面应用程序"并且看起来类似于nwjs。我没有尝试进入Electron vs nwjs辩论,而是桌面与服务器,如果存在差异。

1 个答案:

答案 0 :(得分:1)

你已经掌握了大部分内容,只需要很少的澄清。理由nw.js / Electron声明自己的 desktop 应用程序是,它的核心架构设计旨在将node.js与chromium集成,以便UI启用创建应用程序确实具有UI。您仍然可以使用这些框架的一部分(node.js端)而不启动可见的ui,在这种情况下,行为方式它将类似于plain node.js。还有一点需要注意,就像它在核心中与铬紧密结合一样,在某些情况下你应该正确地启动铬屏幕(或者像许多CI那样创建虚拟缓冲区,或等等)。

此外,当你关心的是性能时,我怀疑使用UI框架进行服务器端工作可以达到你想要的效果 - 虽然不会有很大的优势,但节点与chrome之间的集成与裸节点相比有明显的开销.js obvioulsy。

回到原始问题,我觉得问题本身有些模糊。如果意图是真正的服务器端应用程序,您可能不需要package它,但正确部署节点及其依赖模块或以可安装的方式打包,而不是像pkg那样创建单个二进制文件。