【问题标题】:Packaging a Node.js web application as a normal desktop application [closed]将 Node.js Web 应用程序打包为普通桌面应用程序 [关闭]
【发布时间】:2011-10-13 15:42:27
【问题描述】:

我已经搜索了一些,但找不到用于此的现有工具。

我有一个 Node.js Web 服务器,它设计为在您自己的计算机上运行,​​它可以为您做一些时髦的事情。如果我可以双击 MySnazzyThing.app 而不是安装 Node.js 和 npm 并在命令行上运行 node mysnazzyapp.js,那就太棒了。

.app 可执行文件将启动 Node.js 服务器并打开一个简单的本机 WebKit 窗口,如果我在命令行上运行,该窗口将显示 localhost:3000 上的正常内容。

然后,这个本地应用程序可以通过 Mac App Store 分发。还有 bam,一个 Node.js 桌面应用程序。

是否存在这样的工具?或者是否有任何技术原因导致这无法像我想象的那样工作?

【问题讨论】:

    标签: javascript macos node.js desktop-application


    【解决方案1】:

    选项 1:Electron(以前的 atom-shell)

    这是 GitHub 的 Atom 和 Microsoft 的 Code 编辑器使用的 shell。它与 node-webkit 非常相似,尽管它会首先运行脚本,并且您必须为用户创建一个视图/窗口。还有一些其他的细微差别,但值得一看。


    选项 2:NW.js 以前的 node-webkit

    要点是它基本上扩展了 JavaScript 引擎,让您编写一个支持 Node.js' 扩展对象模型和模块的基于 Web 的应用程序...然后您打包您的 package.json start.html 模块和 JavaScript 文件放入一个 ZIP 文件(扩展名为 .nw)并使用 nw(.exe) 运行它。有 Windows、Mac 和 Linux 版本可用。


    选项 3:NeutralinojsGithub

    Neutralinojs 是一个轻量级和可移植的桌面应用程序开发框架。它允许您使用 JavaScript、HTML 和 CSS 开发轻量级跨平台桌面应用程序。您可以使用任何编程语言(通过扩展 IPC)扩展 Neutralinojs,并将 Neutralinojs 用作任何源文件的一部分(通过子进程 IPC)。


    选项 4:MacGapNode(仅限 OS X

    MacGap 与 Node.js 集成(它似乎变得陈旧)


    选项 5:TauriGithub

    Tauri 是一个工具包,可帮助开发人员为主要桌面平台制作应用程序 - 几乎可以使用任何现有的前端框架。核心是用 Rust 构建的,CLI 利用 Node.js 使 Tauri 成为一种真正的多语言方法来创建和维护出色的应用程序。


    除此之外:服务...

    我不能代表 OS X 作为一个 .App,但很可能在 Node.js 中创建一个后台服务安装并在桌面上创建一个“本地”站点的链接。大多数浏览器都可以选择不显示所有功能(我知道 Firefox 尤其如此)。

    我知道您的问题特别针对 OS X,但在 Windows 中,您可以使用 NSSM 将任何东西作为服务运行,我已将它用于 Windows 中基于 Node.js 的服务。不过,我认为上面的其他一些选项会更好,具体取决于您的需求。


    已删除:


    此答案为多个问题复制,这些参考主要是为了更新方便。

    【讨论】:

    • 对于 OSX 和 Linux github.com/crcn/nexe 看起来也是一个解决方案。
    • 看起来 node-webkit 是其中的赢家。庞大的开发人员基础,良好的文档,由英特尔提供支持。
    • gerty,谢谢...我更新了我的答案以包括 nexe,并将 node-webkit 放在首位...看起来 appjs 可能有点过时了。
    • 对于 OSX 结帐 Macgap,以便您可以提交到应用商店。 Node webkit 因将来使用可能过时的 api 而被拒绝。
    • 嗯,现在有了一个想法。在后台将应用程序作为服务器运行,然后为它打开一个浏览器窗口(例如How can I launch a browser with no window frame or tabs/address bar)。您无法以这种方式对窗口进行太多控制(例如,浏览器处理文件、编辑、视图等菜单项,而用户仍然可以访问浏览器的打印、缩放和页面内等内容搜索功能),但基本上不需要额外的框架。
    【解决方案2】:

    您可以使用AppJS 完成此操作。

    【讨论】:

    • AppJS 项目的启动页面现在指向deskshell:github.com/sihorton/appjs-deskshell
    • 正如@Tracker1 的回答所示,deskshell 现在是一个陈旧的项目,自 2013 年 12 月以来一直没有开发
    【解决方案3】:

    我建议研究 Topcube。它的目标是为 Node.js 开发人员提供一种使用 HTML5 + CSS 3 作为 GUI 平台为其 Node.js 服务器提供桌面 GUI 的方法。

    Topcube at GitHub.

    【讨论】:

    • Topcube 似乎不再受支持了
    • 是的,我建议研究一下 Titanium。它不是 Node.js,而是基于 JS 的跨平台 PC 和移动应用程序开发。 appcelerator.com/products/…
    • Titanium 链接已损坏。我想这就是你所指的:docs.appcelerator.com/titanium/2.0/index.html 他们不透明的营销重心网站确实让人很难看到他们的产品是什么,或者关心什么。
    • 注意:Titanium 桌面部件将不再开发/支持。
    • Titanium Desktop 开发已被一组新的开发人员接管:tidesdk.org
    【解决方案4】:

    目前有很多方法可以做到这一点。

    在打包 Node.js + HTML5 应用程序领域的明显赢家,目前是 Electron(被 AtomVisual Studio CodeSlackDiscord 等使用)。

    您还可以使用打包为应用程序的任何其他语言(使用这些语言/堆栈的工具),并检查节点安装,使用 Node.js 启动“服务器”脚本,然后启动默认浏览器(或某些web 视图组件,通过其他方式),最后将位置设置为 Node.js 服务。这是一种非常轻量级和高效的方法,但与操作系统的集成不如 Electron 这样的解决方案。

    这里 Electron 的主要竞争对手是NW.js。 据我所知,NW.js 具有 Electron 还没有的主要特性是编译/混淆。而 Electron 使自动更新变得容易。

    【讨论】:

      猜你喜欢
      • 2011-07-02
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2011-05-20
      • 2010-09-26
      • 2012-07-17
      相关资源
      最近更新 更多