将node.js Webapp打包为普通的桌面应用程序


86

我进行了搜索,但找不到为此的现有工具。

我有一个node.js Web服务器,该服务器旨在运行在您自己的计算机上,该计算机可以为您做一些令人眼花things乱的事情。如果我可以双击MySnazzyThing.app而不是安装nodejs和npm并node mysnazzyapp.js在命令行上运行,那将是非常棒的。

.app可执行文件将后台处理节点服务器,并打开一个简单的本机Webkit窗口,该窗口将显示localhost:3000如果我在命令行上运行时通常会显示的内容。

然后,可以说该本地应用程序是通过mac应用程序商店分发的。还有bam,这是一个node.js桌面应用程序。

是否存在这样的工具?还是有任何技术原因无法按照我的想象呢?

Answers:



90

选项1:电子(又名原子壳)

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


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

要点是,它基本上扩展了JS引擎,以便您编写支持节点的扩展对象模型和模块的基于Web的应用程序...然后将package.json start.html模块和js文件打包为zip( .nw扩展名)并使用nw(.exe)运行它。有Windows,Mac和Linux版本可用。


选项3:来自Node的Carlo chrom(ium)shell。

这样一来,您可以启动本地安装的Chrome浏览器作为可连接到本地运行的服务器应用程序的外壳。它确实需要局部镀铬,但与要求的非常接近。


选项4:MacGapNode(仅OSX)

具有Node集成的MacGap(似乎过时了)


旁:服务...

我不能说OSX是.App,但是可以在NodeJS中创建后台服务安装,并可以链接到桌面上的“本地”站点。大多数浏览器都有不显示所有功能的选项(我知道Firefox特别如此)。

我知道您的问题特别是OSX,但是在Windows中,您可以使用NSSM将任何内容作为服务运行,并且我已将其用于Windows中基于NodeJS的服务。我认为,根据您的需求,上述其他一些选项会更好。


已移除:


复制此答案以回答多个问题,这些参考文献大多是为了方便更新。


对于OSX和Linux,github.com/crcn/nexe也看起来像一个解决方案。
robocat

看起来node-webkit是其中的赢家。在英特尔的支持下,庞大的开发人员基础,良好的文档资料。

gerty,谢谢。。。我更新了我的答案,包括了nexe,并使node-webkit成为头等大事……看来appjs可能有点陈旧了。
Tracker1

对于OSX,请结帐Macgap,以便您可以提交到应用商店。Node Webkit因将来使用可能过时的api而被拒绝。
迈克尔·卡尔金斯

嗯,现在有个主意。在后台将应用程序作为服务器运行,然后打开它的浏览器窗口(例如,如何启动没有窗口框架或标签/地址栏的浏览器)。这样一来,您对窗口的控制就不会那么多(例如,浏览器处理菜单项,例如文件,编辑,查看等,并且用户仍然可以访问浏览器的打印,缩放和页面内显示等内容)搜索功能),但基本上不需要额外的框架。
Ajedi32

8

我建议研究Topcube,其目标是“为节点开发人员提供一种使用HTML5 + CSS3作为GUI平台在其节点服务器上安装桌面GUI的方法。” github上的Topcube


1
Topcube似乎不再受支持了
Shamoon

是的,我建议您研究钛。它不是Node.js,而是基于JS的跨平台的PC和移动应用程序开发。appcelerator.com/products/...
布莱恩Heese

那条钛金属链烂了。我想这就是您指的是:docs.appcelerator.com/titanium/2.0/index.html他们的不透明的营销繁琐的网站确实使您很难看到他们的产品或关心它们。
Grumdrig

注意:Titanium桌面部件将不再开发/支持。
Sri Kadimisetty 2012年

1
Titanium桌面开发已由一组新的开发人员接手
Motin 2012年

-1

当前,有很多方法可以实现此目的。

当前,在打包节点+ html5应用程序的过程中,明显的赢家是Electron(由Atom,VSCode,Slack,Discord等使用)。

您还可以使用打包为应用程序的任何其他语言(使用这些语言/堆栈的工具),并检查是否安装了节点,启动带有节点的“服务器”脚本,然后启动默认的浏览器(或某些Web视图组件,通过其他方法),最后将位置设置为节点服务。这是一种非常轻便且有效的方法,但是与Electron这样的解决方案相比,它并没有很好地与OS集成。

在这里,Electron的主要竞争对手是NW.js。据我所知,NW.js具有(尚未)Electron尚未实现的主要功能是编译/模糊处理。虽然Electron使自动更新变得容易。

https://electron.atom.io/ https://nwjs.io/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.