【问题标题】:Package node.js app as cross-platform executable, not for desktop app将 node.js 应用程序打包为跨平台可执行文件,不适用于桌面应用程序
【发布时间】:2018-08-02 16:30:36
【问题描述】:

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

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

answer 声明 nwjs “是一个选项,但它实际上不是设置为建立服务器 - 客户端类型关系”,但随后评论说“您可以从 node-webkit 启动服务器在 Node.js 中启动它的方式。只是 node-webkit 提供了另一种超越 B/S 架构的方式。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的信息。我想打包它,这样客户就不必安装nodejs,因此使用pkg(只需单击一个.exe)。此外,由于它是二进制的,因此还有源代码保护。我很好奇您的评论“以可安装的方式打包它”-您对此有参考吗?它是否比 pkg 更受欢迎?
    • 普通旧安装程序周围有大量资源。您也可以通过这些安装程序在内部安装 nodejs,然后安装正确的模块。最后,没有像 code protection 这样的东西——无论你如何打包,代码都是可读的。
    猜你喜欢
    • 2011-05-27
    • 2023-03-05
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2011-10-13
    • 2012-03-28
    • 1970-01-01
    相关资源
    最近更新 更多