0

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

我尝试了 zeit/pkg 并且效果很好,但是已经读到除非配置正确,否则可能会出现性能问题。我想确保我选择了正确的工具并且遇到了 nwjs。它似乎做了很多与 pkg 相同的事情,但拥有更多的追随者,以及更多的文档和强大的 api。我可以像使用 pkg 一样使用 nwjs 作为服务器端可执行文件(即不使用桌面功能)吗?

这个答案表明nwjs“是一个选项,但它确实没有设置为执行服务器 - 客户端类型关系”,但随后评论说“您可以以启动方式从node-webkit启动服务器它在 Node.js 中。只是 node-webkit 提供了 B/S 架构之外的另一种方式”。

那么,nwjs 与 pkg 实际上是相同的,还是根本不同?

我意识到还有 Electron,它声明“构建跨平台桌面应用程序”并且看起来类似于 nwjs。我不是想进入 Electron 与 nwjs 的辩论,而是桌面与服务器,如果有区别的话。

4

1 回答 1

1

你已经得到了大部分的东西,只需要很少的澄清。原因 nw.js / Electron 将自己声明为桌面应用程序是,它的核心架构设计旨在将 node.js 与 chromium 集成以具有 UI,从而使创建的应用程序确实具有 UI。您仍然可以在不启动可见 ui 的情况下使用这些框架的一部分(node.js 端),在这种情况下,它的行为类似于普通的 node.js。仍然有一些警告,就像它已经与核心中的铬紧密集成,在某些情况下,您应该让屏幕正确启动铬(或像许多 CI 那样创建虚拟缓冲区,等等)。

此外,当您关心的是性能时,我怀疑使用 UI 框架进行服务器端工作能否实现您的期望 - 虽然不会有很大的差异,但与裸 node.js 相比,node 与 chromium 之间的集成会产生开销。

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

于 2018-02-22T19:38:44.803 回答