最近發現nodejs能夠作桌面應用,主要是以前的同事在搞,我也要稍微研究下不能落後啊,基於nodejs的桌面應用,經常使用的就是nw.js和electron,nw出的比較早,資料比較多,bug也不少,它的前身是node-webkit文檔能夠參考nw.js,微信web開發工具、釘釘都是基於 nw.js 開發的,nw.js支持xp,還有不少人抱着xp過日子呢。而electron比較全比較新,在github的文檔electron也比較多,有中文文檔的,成型的case不少Electron由github主導,有成熟的殺手級產品atom和vs code,Intel和微軟都有參與,社區仍是很活躍的。javascript
原理研究
web-native技術是基於 Chromium 和 Node.js 運行的。chromium的商業化產品就是咱們熟悉的chrome瀏覽器。chromium基本就是一個操做系統,裏面提供了很是複雜的協議棧和各類功能,包括但不限於:html
跨平臺的系統資源訪問,如文件系統
各類互聯網相關協議,如HTTP, HTTPS, FTP, DNS, etc.
強大的併發處理能力
各類壓縮協議和算法
頁面快速渲染
javascript執行引擎
磁盤緩存機制vue
electron作了以下事情:
(1) 將nodejs和chromium的結合起來,讓使用者能夠調用node.js的函數,讓你可使用幾乎全部的nodejs社區裏的module。
(2) 合併nodejs和chromium二者裏的web引擎(都基於v8)。這樣全部javascript運行在一個context下。
(3) 修改沙箱模型,去除不少對桌面應用而言沒有意義的安全手段,讓應用能夠最大程度訪問本地資源(好比文件,本地網絡等)。java
一旦環境跑起來,就跟作一個網頁幾乎就沒什麼區別,加載CSS,圖片啊,JS就能夠了。由於本質上,electron就是給你搞了一個Chrome瀏覽器的殼子,只是比傳統網頁多了一個訪問桌面文件的功能,跟cordova其實沒有多大的差異,只是底層和運行環境稍有不一樣。因此無論是什麼jquery,vue,react,cycle.js,bs,dojo,prototype拉起來就是幹,也不用擔憂兼容性。node
看下electron主打的功能
自動更新
原生的菜單 & 通知
崩潰報告
調試 & 性能分析
Windows 安裝程序react
一個基礎的Electron包含三個文件:package.json(元數據),main.js(代碼)andindex.html(圖形用戶界面)。框架由Electron可執行文件(Windows中爲electron.exe、macOS中爲electron.app、Linux中爲electron)提供。開發者能夠自行添加標誌、自定義圖標、重命名或編輯Electron可執行文件。jquery
下面是nw.js和electron的相關功能對比圖git
跑個程序試下electrongithub
git clone https://github.com/electron/electron-quick-start cd electron-quick-start cnpm install //是cnpm啊! npm start
經過上面的一頓操做你會獲取到一個window的窗口web
//下面是發佈流程
npm install electron-packager -g electron-packager . helloworld --out ../electron
就能夠在上級目錄的electron/helloworld-win32-x64中的找到一個helloworld.exe來使用,這就是window下的程序了。
js統一江湖指日可待
參考資料用nodejs開發桌面應用用Nodejs開發桌面應用。NW.js 和 Electron 各有什麼優缺點,你選擇哪一個?NW.js & Electron Compared (2016 Edition) - TangibleJS