2011-07-26 63 views
84

我已經搜索了一下,但找不到現有的工具。將node.js webapp打包爲普通桌面應用程序

我有一個node.js web服務器,專門用於在您自己的計算機上運行,​​爲您做一些時髦的事情。如果我可以在命令行上雙擊MySnazzyThing.app而不是安裝nodejs和npm並運行node mysnazzyapp.js,那將會非常棒。

.app可執行文件將後臺打開節點服務器並打開一個簡單的本地webkit窗口,該窗口將顯示通常在localhost:3000上運行的命令行。

然後,這個本機應用程序可以通過mac應用程序商店進行分發。和bam,一個node.js桌面應用程序。

是否存在這樣的工具?還是有任何技術上的原因,這不會像我想象的那樣工作?

回答

21

你可以做到這一點使用AppJS:https://github.com/appjs/appjs

+5

AppJS項目的splash頁面現在指向deskshell:https://github.com/sihorton/appjs-deskshell/ – yzorg

+2

正如@ Tracker1的回答所示,現在deskshell已經是一個陳舊的項目,並且自2013年12月以來還沒有開發 – cmroanirgo

-4

你不能用bash腳本來做這個嗎?我不知道提供詳細信息,但這可能是一條可行的路。

+3

這裏的關鍵是要打包的Web服務器和UI本身成爲一個獨立的應用程序,甚至不在您的瀏覽器中運行,但它是自己的應用程序窗口一個bash腳本只會給我一個運行服務器的宏,然後打開我的瀏覽器到它的端口,但這根本不是一回事。 –

8

我建議看看Topcube,它的目標是「爲節點開發人員提供一種使用HTML5 + CSS3作爲GUI平臺的節點服務器的桌面GUI。」 Topcube at github

+1

Topcube似乎沒有支持更長的時間 – Shamoon

+0

是的,我建議尋找鈦。它不是Node.js,而是基於JS和PC和移動應用程序開發的跨平臺。 http://www.appcelerator.com/products/titanium-cross-platform-application-development/ –

+0

那個鈦鏈接已經腐爛了。我想這是你所指的:http://docs.appcelerator.com/titanium/2.0/index.html他們不透明的營銷網站確實很難看到他們的產品是什麼,或關心。 – Grumdrig

-1

目前有很多方法可以實現這一點。

包裝節點+ html5應用程序的空白贏家,目前是Electron(由Atom,VSCode,Slack,Discord等使用)。

您還可以使用任何打包爲應用程序的其他語言(使用這些語言/堆棧的工具),然後檢查節點安裝,啓動帶有節點的「服務器」腳本,然後啓動默認瀏覽器(或某些Web查看組件,通過其他方式),最後將位置設置爲節點服務。這是一個非常輕量且高效的方法,但是與Electron等解決方案不太一樣。

這裏Electron的主要競爭對手是NW.js. 據我所知,NW.js的主要特點是Electron還沒有(編譯/混淆)。而Electron使自動更新變得簡單。

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

+2

現在可以通過http://appjs.org –

89

選項1:electron(又名原子 - 殼)

這是github上的Atom編輯器使用的外殼。它與node-webkit非常相似,不過它將首先運行腳本,並且必須爲用戶創建一個視圖/窗口。還有一些其他的細微差異,但值得一看。


選項2:NW.js以前節點的WebKit

要點是,它基本上擴展了JS引擎爲你寫一個基於Web的應用程序支持節點的擴展對象模型和模塊......你然後將你的package.json start.html模塊和js文件打包成一個壓縮文件(帶有.nw擴展名),並用nw(.exe)運行它..有windows,mac和linux版本可用。


選項3:ThrustNode Adapter

這是一個非常失去與的IPC信道向發射應用周圍的webkit /鉻結合。您可以使用消息通道,也可以將應用程序編寫爲節點中更傳統的服務器端應用程序,並控制窗口啓動。這可能適合你。

Thrust具有多種語言的綁定。我只把它放在MacGapNode之前,因爲我首先傾向於使用跨平臺選項。


方案4:MacGapNode(OSX只)

MacGap與節點集成(似乎越來越陳舊)


旁白:服務...

我可以」不要說OSX就是一個.App,但可以在NodeJS中創建一個後臺服務安裝程序,並在桌面上創建一個「本地」站點的鏈接。大多數瀏覽器可以選擇不顯示所有功能(我知道特別是firefox)。

我知道你的問題是特別針對OSX的,但是在windows中你可以使用NSSM來運行任何服務,並且我已經在windows中使用它來實現基於NodeJS的服務。我認爲上面的其他一些選項更好取決於您的需求。


刪除:

  • nexe - 陳舊/無人維護
  • AppJS - 陳舊,網站離線
  • - 與DeskShell
  • DeskShell 取代 - 重命名爲NW.js
  • XULRunner 項目停滯不前,並且非常落後。

這個答案被複制了多個問題,這些提法大多用於更新方便。

+0

對於OSX和Linux https://github.com/crcn/nexe也看起來像一個解決方案。 – robocat

+0

它看起來像node-webkit是其中的贏家。大型開發人員基礎,良好的文檔,由英特爾支持。 – Dan

+0

gerty,謝謝...我更新了我的答案,包括nexe,以及使node-webkit成爲最佳位置......看起來appjs可能會變得有點陳舊。 – Tracker1

相關問題