Node-Webkit是NodeJS與WebKit技術的融合,提供一個跨Windows、Linux平臺的客戶端應用開發的底層框架,利用流行的Web技術(Node.JS,JavaScript,HTML5)來編寫應用程序的平臺。應用程序開發人員可以輕松的利用Web技術來實現各種應用程序。Node-Webkit性能和特色已經讓它成為當今世界領先的Web技術應用程序平臺。
Node-Webkit的項目發起人 王文睿
CSDN:您先做個自我介紹吧!
王文睿:目前我任職于Intel公司開源技術中心(OTC),從事Web和瀏覽器技術開發工作。現在主要工作是開發和維護Node-Webkit項目。此前從事過MeeGo、Tizen和JNI xml性能庫的開發和數據中心解決方案服務。我于2005年加入Intel公司,此前于畢業于中科大少年班,在計算機系獲得博士學位,研究方向為高性能計算。
CSDN:Node-Webkit項目創建的初衷是什么?
王文睿:2011年的時候,我和同事在討論如何為Tizen WebRuntime增加擴展API的時候有了這個想法,就是用Node平臺來擴展WebRuntime,達到開發本地應用的目的。那時候公司內部有個鼓勵創新計劃的活動,所以起初我可以用10%的工作時間投入到這個項目中。
CSDN:怎么想到把Node.js和Webkit技術結合在一起的?在這個項目中,Node.js和Webkit各自扮演著怎樣的角色?這樣結合有哪些優勢?
王文睿:那時候已經了解到Node.js平臺在Web開發者中很流行,有很多庫,可以寫本地應用。所以就有了用它擴展WebRuntime的想法。相比自己定義許多API, 這樣做開發者幾乎不需要學習新的接口,而且方便自己用JS或者C++擴展。
WebKit(現在是Blink)負責HTML5 UI 相關的部分,而Node.js負責本地的API接口,比如文件系統,網絡,設備等。
CSDN:Node-Webkit允許采用Web技術開發本地應用的原理是什么?具體是如何實現的?
王文睿:項目的核心思想就是在DOM中跑的代碼能夠直接調用Node.js中運行的代碼,所以核心的部分是把二者跑在同一個線程中。需要把Chromium進程的事件循環和Node.js的事件循環合并在一起,并且把二者的V8 JS引擎環境(Context)合并起來。
CSDN:將HTML/CSS/JS編譯為本地代碼,其內部過程是什么樣的?
王文睿:其實是一個打包的功能,將項目文件打包和Node-Webkit可執行文件放置在一起,就可以直接運行了。Node-Webkit啟動的時候會自動加載頁面文件。
CSDN:和其他類似方案(比如TideSDK等)相比,Node-Webkit有哪些優勢?
王文睿:Node-Webkit的最大特點是集成了Node.js,可以直接調用該平臺上的各種庫。因為二者之間的函數調用和對象的互相訪問都是直接的,所以性能較好。在Node-Webkit出現以后,曾經也出現過其他試圖集成Node.js的項目,但是是通過IPC機制,把Node.js跑在獨立的進程中,這樣需要把函數調用和參數以及結果序列化。其他一些項目則不支持Node.js。
另外Node-Webkit項目處于活躍狀態,能夠經常更新并和上游項目(Chromium、Node.js)同步。
CSDN:Node-Webkit支持哪些平臺?對于在各平臺上發布,Node-Webkit提供了哪些本地接口?
王文睿:目前支持Windows,Mac OSX和Linux三種主流桌面平臺。本地接口主要是通過Node.js平臺上的各種庫實現的。在這個平臺上有上萬個軟件包(npmjs.org),開發者可以選擇自己需要的。Node-Webkit也提供了一個用于操作窗口、菜單、剪貼板等UI元素的跨平臺庫。
CSDN:Node-Webkit應用可以直接操作本地OS,在應用的性能和安全方面,Node-Webkit是如何考慮和實現的?
王文睿:Node-Webkit支持的是本地應用,這類應用相比Web應用的安全模型是十分不同的。和最終用戶的Outlook、Skype等桌面軟件一樣,前者通過信任的渠道分發、用戶安裝即意味著信任該軟件、軟件可以在系統里面做幾乎任何事情;而Web應用的特點是通過互聯網直接下載并執行、默認情況下用戶不信任該應用、應用進行特定操作前(例如訪問攝像頭)需要用戶授權。
所以盡管同樣是基于Web技術,Node-Webkit針對的是完全不同的安全模型。對于開發者的代碼,Node-Webkit會放寬很多來自Web應用安全模型的限制,比如跨域訪問等。對于當Node-Webkit程序加載不信任的內容時,開發者可以指定使用和Web應用一樣的安全措施。
CSDN:能否介紹一下Node-Webkit的主要開發人員?目前在Github中,Node-Webkit的fork數超過800,來自社區的貢獻有多少?
王文睿:主要的開發人員目前只有我一個人。曾經有另一個主要的開發者趙成,他在我們這里實習的半年多時間里開發了跨平臺的UI庫功能。
我們一直鼓勵社區參與這個項目的開發。到目前為止來自于社區的貢獻不多,原因大概是因為社區中的用戶主要使用JavaScript語言,而我們的代碼主要是C++編寫的。另外我們一直在招聘實習生參與這個項目,歡迎大家投遞簡歷。
CSDN:目前基于Node-Webkit開發的成功案例/應用有哪些?
王文睿:有一個創新的IDE項目叫LightTable ,它曾經是 KickStarter上的10大科技項目之一,并向7000多人募集了35萬美元,目前已經獲得風投支持;還有不少游戲基于Node-Webkit,例如GameDevTycoon;LeapMotion應用中心和支持LeapMotion控制器的一些應用;另外還有Intel的HTML5 開發環境XDK New等。
CSDN:Node-Webkit未來的發展規劃?是否會考慮支持移動平臺?
王文睿:未來需要定期和上游項目保持同步,應用戶的需要提供更多的特性,比如提供瀏覽器內部接口、更多跨平臺的UI功能。由于目前用戶的需求和反饋很多,所以還無法提供移動平臺的支持。
CSDN:您如何看待HTML5及HTML5開發本地應用的前景?
王文睿:在互聯網不斷發展的背景下,HTML5是為數不多的業界各方持續集中投入開發的技術。使用HTML5開發界面處于領先位置,所以它一定會廣泛應用到桌面領域。
CSDN:前一段時間,Groupon和PayPal將其技術棧轉移到了Node.js,您如何看待近兩年Node.js技術的發展和其前景?
王文睿:最近兩年Node.js 越來越熱門,兩年多以前Node-Webkit 創立的時候,npmjs.org上有4000多個軟件包,現在已經增長到20000多個。因為它給JavaScript或者Web開發者一個瀏覽器環境之外的新天地。他們可以寫包括服務器端在內的本地應用,不再受限于瀏覽器提供的API限制。這種編程方式一定會流行開來。
CSDN:英特爾開放源碼技術中心是一個什么樣的組織?據我所知,Node-Webkit最初是您的業余項目,現在的狀態是什么?
王文睿:英特爾開放源碼技術中心(OTC)是Intel內部的一個全球性的組織。位于美國、中國、英國、芬蘭、巴西、法國、羅馬尼亞等地800多人。參與開發包括Linux 內核、虛擬化、Android、Tizen、Chromium等各種開源項目。
目前因為Node-Webkit有不少用戶,所以我可以用全部時間開發這個項目。即使如此有很多問題不能一一回復,借此機會希望大家諒解。