将 Node.js Web 应用程序打包为普通桌面应用程序

IT技术 javascript macos node.js desktop-application
2021-02-21 10:53:47

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

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

.app可执行文件将阀芯了Node.js的服务器,并打开一个简单的本地WebKit的窗口,它会显示一个通常来说是对localhost:3000,如果我在命令行上运行。

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

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

4个回答

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

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


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

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


选项 3:Neutralinojs Github

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


选项 4:MacGapNode仅限OS X

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


选项 5:Tauri Github

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看起来也是一个解决方案。
2021-04-27 10:53:47
gerty,谢谢...我更新了我的答案以包含 nexe,并使 node-webkit 成为头把交椅...看起来 appjs 可能有点过时了。
2021-04-29 10:53:47
看起来 node-webkit 是其中的赢家。庞大的开发人员基础,良好的文档,由英特尔提供支持。
2021-05-06 10:53:47
嗯,现在有一个想法。在后台将应用程序作为服务器运行,然后为其打开一个浏览器窗口(例如,如何启动没有窗口框架或选项卡/地址栏的浏览器)。您无法通过这种方式对窗口进行太多控制(例如,浏览器处理文件、编辑、查看等菜单项,而用户仍然可以访问浏览器的打印、缩放和页内等内容)搜索功能),但基本上不需要额外的框架。
2021-05-06 10:53:47
对于 OSX 结帐 Macgap,以便您可以提交到应用程序商店。Node webkit 因将来使用可能过时的 api 而被拒绝。
2021-05-18 10:53:47

您可以使用AppJS完成此操作

正如@Tracker1 的回答所表明的那样,deskshell 现在是一个陈旧的项目,自 2013 年 12 月以来就没有开发过
2021-04-22 10:53:47
AppJS 项目的启动页面现在指向deskshell:github.com/sihorton/appjs-deskshell
2021-05-19 10:53:47

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

GitHub 上的 Topcube

Titanium 桌面开发已被一组新的开发人员接手tidesdk.org
2021-04-23 10:53:47
似乎不再支持 Topcube
2021-04-26 10:53:47
是的,我建议研究钛。它不是 Node.js,而是基于 JS 的跨平台 PC 和移动应用程序开发。appcelerator.com/products/…
2021-05-04 10:53:47
注意:将不再开发/支持 Titanium 桌面部件。
2021-05-06 10:53:47
那个钛金链接已经腐烂了。我想这就是您所指的:docs.appcelerator.com/titanium/2.0/index.html他们不透明的营销型网站确实让人很难看到他们的产品是什么,或者很难关心。
2021-05-08 10:53:47

目前有很多方法可以实现这一点。

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

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

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