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

时间:2011-07-26 18:12:00

标签: javascript macos node.js desktop-application

我搜索了一下,但找不到现有的工具。

我有一个node.js网络服务器,可以在你自己的计算机上运行,​​为你做一些时髦的事情。如果我可以双击MySnazzyThing.app而不是在命令行上安装nodejs和npm并运行node mysnazzyapp.js,那将是非常令人讨厌的。

.app可执行文件将清空节点服务器并打开一个简单的本机webkit窗口,如果我在命令行上运行,它将显示localhost:3000上通常会出现的内容。

然后,这个本机应用程序可以通过mac应用商店分发。和bam,一个node.js桌面应用程序。

是否存在此类工具?或者有任何技术原因,这不会像我想象的那样起作用吗?

5 个答案:

答案 0 :(得分:90)

选项1:electron(又名atom-shell)

这是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作为可以连接到本地运行的服务器应用程序的shell启动。它需要一个本地镀铬,但非常接近要求。


选项4:MacGapNode(仅限OSX)

带节点集成的MacGap(似乎过时)


旁白:服务......

我不能将此作为OSX发言。但是很可能在NodeJS中创建后台服务安装,并在桌面上创建指向“本地”站点的链接。大多数浏览器都有一个不显示所有功能的选项(特别是我知道firefox)。

我知道您的问题特别针对OSX,但在Windows中,您可以使用NSSM将任何内容作为服务运行,并且我已将其用于Windows中基于NodeJS的服务。我认为上面的一些其他选择会更好,具体取决于您的需求。


移除:


这个答案是针对多个问题复制的,这些引用主要是为了方便更新。

答案 1 :(得分:21)

您可以使用AppJS完成此操作:https://github.com/appjs/appjs

答案 2 :(得分:8)

我建议调查Topcube,它的目标是“让节点开发人员使用HTML5 + CSS3作为GUI平台,为他们的节点服务器提供桌面GUI。” Topcube at github

答案 3 :(得分:-1)

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

包装节点+ html5应用程序空间的明显赢家,目前是Electron(由Atom,VSCode,Slack,Discord等使用)。

您还可以使用打包为app的任何其他语言(使用这些语言/堆栈的工具),检查节点安装,使用node启动“server”脚本,然后启动默认浏览器(或某些Web视图)组件,通过一些其他方法),最后将位置设置为节点服务。这是一种非常轻量级且高效的方法,但不像OS那样与OS集成。

Electron的主要竞争对手是NW.js. 据我所知,NW.js的主要特征是Electron还没有(还)是编译/混淆。虽然Electron可以轻松实现自动更新。

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

答案 4 :(得分:-4)

你不能用bash脚本做到这一点吗?我不太了解提供细节,但这可能是要走的路。