Node.js+Node-webkit的開發模式前景如何?
我的理解就是Node.js+Node-webkit組成了一個許可權全開的瀏覽器,你可以寫任何應用,而且開發語言是HTML+CSS+JavaScript。
如果能把頁面表現和後端服務區分開的話,後端服務可以放在本地也可以放在服務端,既可以是本地應用,又可以接入Web服務。那麼是不是可以說就實現了一次開發,到處運行了呢。我想像的應用場景:&> 如果用Node.js+Node-webkit開發了一個PPT製作軟體。 &> 既可以發布為本地版,又能夠發布為Web版。
&> 如果想要發布移動版,只需要把界面部分發布到WebView,服務依然放在服務端,對底層的調用可以用PhoneGap之類的東西。
前景是不錯的,但是 node-webkit (現在叫 nw.js) 目前也暴露出很多問題,主要是 BUG 太多社區維護能力又不足。我們在做的過程里遇到各種低級 BUG 不勝其煩。根源在於 node-webkit 的整個架構設計存在問題導致健壯性難以提上去。另外也難為作者,人數不足,目前貢獻者才 55 人左右,很多 BUG 提了也來不及修復。
相反 electron 就好很多。首先架構上健壯性不錯(關於二者架構差異參考這裡:electron/atom-shell-vs-node-webkit.md at master · atom/electron · GitHub),另外社區貢獻者人數比 node-webkit 多很多,目前有 136 人。低級 BUG 的數目明顯比 node-webkit 少很多。
我們目前已經逐步從 node-webkit 遷移到 electron,解決了很多問題。總的來看希望兩個項目都能有更好的發展。其實WebAPP的本地化跨平台方案是:移動端Cordova,桌面端Electron(github atom)。
Node.js的開發我應用不太多,一般都是上班的時候寫寫快捷的工具,應用或者service。
但是你提到的Node.js+Node-webkit,我可以大概的理解成Github上的node-webkit項目,node和chromium的運行時整合,再通過node提供的中間層的能力加強JS的可操作性。
node-webkit基本上是一個開發桌面應用的一種解決方案(還不能算太成熟,但已經有落地的項目),按照我一知半解的理解,你說的一次編寫,到處運行還是做不到的。因為桌面端的JS代碼和Web端的代碼大相庭徑,你不是簡單的一份代碼兩處運行,而是一份代碼兩種運行時,在這樣的情況下,你如何做到兩端JS能力的統一,光數據交換模式就不一樣了,硬要做service和本地介面的分別調用,那和寫兩份代碼有什麼區別?
至於移動版,你如果要應用phonegap,那就是另外再寫一版移動端的代碼。區別就是,語言都是JS,但是具體落地的邏輯還是不一樣的。nw.js目前有阿里的釘釘有使用
谷歌的chrome app 笑而不語
谷歌只玩生態簡單的內容展示,如新聞類的桌面App或許不錯,不懂node,但是大部分桌面App不得多任務,多個worker非同步處理,各種邏輯處理,數據運算。node.js的效率是否可以接受呢? 還是改用CEF吧,這些都交給C++來處理,UI交給web。同樣可以mac/linux/windows桌面跨平台。
想起有道的heX,貌似許久未更新了....
推薦閱讀:
※你寫過的最好的 Node.js 腳本是什麼?
※nodejs的回調函數里為什麼需要return?
※請問一下,跨平台解決方案中,Qt 和 Electron 孰優孰劣?
※webpack這個js模塊管理器(module bundler)怎麼樣?
※io.js 和 node.js 之間應該如何選擇?