1. 程式人生 > >heX——基於 HTML5 和 Node.JS 開發桌面應用

heX——基於 HTML5 和 Node.JS 開發桌面應用

heX 是網易有道團隊的一個開源專案,允許你採用前端技術(HTML,CSS,JavaScript)開發桌面應用軟體的跨平臺解決方案。heX 是你開發桌面應用的一種新的選擇,意在解決傳統桌面應用開發中繁瑣的UI和互動開發工作,使其變的簡單而高效,特別適合於開發重UI,重互動的桌面應用軟體。

您可能感興趣的相關文章

  近幾年,移動應用和web2.0大行其道,相比之下,傳統桌面應用程式開發顯得相對冷清(包括該領域技術人才的後繼力量),但在一些場景下,它依然有其不可替代的優勢。探索中我們嘗試了一種新的辦法,並給它取名heX,將HTML5和Node.JS的技術優勢,應用於桌面應用程式開發,使得工作變得簡單而高效。

  2012年前後,一位研發工程師(外號6哥,精通web前端和桌面應用開發),先後參與了兩個傳統桌面應用程式UI改版工作(有道雲筆記有道詞典),任務是把軟體介面中部分割槽域的瀏覽器渲染引擎,由IE核心替換為webkit,在這個過程中,有一種強烈的慾望:把整個軟體介面的渲染都交由瀏覽器引擎來完成,這樣一來,UI和互動部分都可以用前端技術來實現,那麼,開發過程將變的簡單許多,而客戶端開發人員的主要精力也可放在業務邏輯上,何樂而不為!

  為此,我們做了大量的調研,經反覆嘗試,最終確定通過整合Chromium和Node.JS,來解決桌面應用開發中遇到的大量繁瑣的UI和互動開發工作。期間,發現一款類似的開源專案node-webkit,調研的結論是它暫時還無法用於正式的專案,所以,於2012年6月,我們正式成立一人開發小組(確實夠小),經3個月的努力,終有小成,現已經應用於有道詞典最新版。

  選擇Chromium,是因為它對HTML5的支援非常優秀,其內嵌的V8引擎,更是業內效率最好的JavaScript指令碼引擎之一,且其專案開源,又有專門的社群和團隊維護,作為UI渲染引擎,它是不二之選,體驗上,你可以試用下google chrome瀏覽器,基本一致。

  選擇Node.JS,是因為開發桌面應用,本地資源操作是必備的能力,這方面JavaScript無能為力,而Node.JS則很好的解決了這個問題,它使得JavaScript操作本地資源變的毫無障礙。另一方面,Node.JS核心也是採用V8引擎,使得其與Chromium的整合變得更順理成章。

用heX開發桌面應用的優勢

  HTML5這幾年很火,在成熟產品中的應用卻極少,受各瀏覽器和平臺的軟/硬體效能問題的限制,整體感覺總是難以舒展(用的不踏實),具體原因網上可以找到一大堆,這裡列舉一個移動web app相關的,中英對照版,推薦抽空看一看:

  儘管如此,HTML5的優勢依然很明顯,普及程度也正逐年提高,我們對它的未來信心十足。好東西,都值得我們主動去嘗試,heX做的一個事情,就是提前把它應用於桌面應用開發,而不用顧忌它的相容性和平臺效能問題(PC效能過剩)。

用HTML5開發桌面應用,到底有什麼樣的優勢呢?這裡列舉幾項:

  • 精準還原UI設計。現在客戶端軟體UI設計用native方式來實現的成本越來越高,對HTML5來說卻很容易,對後續的維護也非常的友好;

  • 使用者體驗。如果你不清楚HTML5所能做到的體驗效果,可以看看Chrome Experiments(http://www.chromeexperiments.com/);

  • 開發除錯便利。heX保留了開發者工具(Chrome Developer Tools),讓你在開發除錯過程中,就如同web開發一樣便利;

  • 學習成本。相比傳統桌面應用開發,web技術的入門成本明顯偏低,你不用擔心團隊成員的離開,而苦於尋找後續開發力量。

  桌面應用開發,本地資源操作能力必不可少,Node.JS提供了豐富的自帶API,讓你免於逐個封裝C++實現,就能在heX環境下的html頁面中直接使用,如:本地檔案系統操作,二進位制資料處理,方便的建立子程序等等,詳見Node.JS API DOCS

在桌面應用開發中用Node.JS的好處(一部分來自於heX的努力):

  • 直接用JavaScript對本地資源進行操作,相比C/C++,你無需編譯,即寫即用;

  • 頁面互動邏輯,窗體行為操作,與C++通訊,用JavaScript都能搞定,開發一個桌面應用,你無需在語言之間來回切換;

  • Node.JS豐富的第三擴充套件,你都可以直接使用,無需從零開始;

  • 繼承於Node.JS優秀的擴充套件能力,以及它所遵循的commonjs規範,程式碼管理也將變的方便和易於控制。

  從技術角度來講,選擇一個新生事物,我們持謹慎態度,需要經過充分的調研,考慮的因素眾多,比如:效能,使用者體驗,開發效率,是否有團隊在維護,文件是否完備,是否開源(如果是商業用處,還需考慮它的開源協議)等等。

而heX作為桌面應用開發的一種新的選擇,它在這些方面的表現如何呢?前面已經講到一些,這裡再補充幾點:

  • 效能和體驗,heX的基礎由Chromium和Node.JS整合而成,整合後這兩者的效能表現不受影響,體驗方面,你可以參考google chrome瀏覽器,基本保持一致;

  • 開發效率,如果你有過web前端開發經歷,現在僅要求你支援最新版的chrome瀏覽器,你覺得如何?睡著了都能笑醒的事,heX做到了;

  •   一種東西,只能解決一方面的需求,heX亦非萬能,亦有它適合的使用場景,最適合重UI、重互動的桌面應用,比如即將推出的新版有道詞典(億級桌面應用軟體)beta版,就是採用heX作為其介面的解決方案。

如何用heX開始一個桌面應用程式

  採用heX開發桌面應用程式,有兩種方式:

  • 直接基於heX做開發,針對web前端開發者,不要求桌面應用開發經驗;

  • 以模組形式引入到現在桌面工程中,針對傳統桌面應用開發者,適合有一定歷史的專案,或僅在介面中區域性區域支援即可的專案。

  不管採用哪種方式,開發過程都很簡單,這裡就第一種方式,從零開始,一起來製作一個 hello word,如下:

  1、下載heX二進位制包(http://codown.youdao.com/hex/hex_1453_web_develop_windows.zip),解壓到本地,開啟後目錄結構如下圖所示,其中“hexclient.exe”是主程式檔案,雙擊即可執行heX,“manifest.json”是heX的配置檔案,可配置入口檔案,視窗初始大小、位置等資訊

  2、建立一個用於寫hello word程式的測試目錄“test”,同時在其中新建html、js檔案,如下圖所示

  3、修改manifest.json檔案,入口改為test/index.html,如下圖所示

  4、雙擊 hexclient.exe,執行,一秒後介面由“……”變為“Hello Word!”,如下圖所示,到此為止,一個簡單的桌面應用就搞定了