Javascript Tilemill使用什么使node.js成为本机桌面应用程序?

Javascript Tilemill使用什么使node.js成为本机桌面应用程序?,javascript,node.js,tilemill,Javascript,Node.js,Tilemill,我一直在想tilemill是如何将他们的节点应用程序打包成mac、linux或windows的桌面应用程序的。我搜索了他们的github项目,没有看到任何关于他们是如何做到这一点的细节 它只是一个打包的应用程序,依赖项可以在package.json中找到,至于它使用的分发和安装, nsis安装程序部署应用程序,因为节点.exe没有太多依赖项(它只有一个.exe)。因此,当安装它时,只需将.exe提取到本地目录,并交付应用程序,如果您浏览本地目录,您甚至会找到每个模块都预装在其中的node\u m


我一直在想tilemill是如何将他们的节点应用程序打包成mac、linux或windows的桌面应用程序的。我搜索了他们的github项目,没有看到任何关于他们是如何做到这一点的细节

它只是一个打包的应用程序,依赖项可以在
package.json
中找到,至于它使用的分发和安装,
nsis安装程序部署应用程序,因为
节点.exe
没有太多依赖项(它只有一个.exe)。因此,当安装它时,只需将.exe提取到本地目录,并交付应用程序,如果您浏览本地目录,您甚至会找到每个模块都预装在其中的
node\u modules
文件夹


Tilemill不会在本地node.js的任何更新中中断,因为它使用其固定版本
node.exe

他们正在使用附带的nodejs和libs在端口20008和20009上启动一个小型服务器,然后在webview中打开它。每个目标平台都有控制节点进程的基本包装器,并打开指向localhost:20009的webview

例如,在Mac上,所有内容(nodejs、库和资产)都包含在TileMill.app/Resources/中,然后在TileMill.app/MacOS/下是TileMill,它只加载node+index.js(在Resources/中)并打开webview


完成类似任务的一种更简单的跨平台方法是使用。不仅可以轻松部署,还可以直接在web层内调用NodeJ,而不必使用大量web回调。这意味着您可以直接访问文件,而不需要将客户机/服务器分开。

基本上是这样,尽管要清楚,跨平台UI/浏览器包装比静态编译应用程序的所有二进制依赖项的要求要小。是的,节点webkit可以以这种方式使用。我将其用于新版本的来编译串行库的二进制dep。每个目标都需要您为该平台编译模块(npm安装,它编译其二进制DEP)