node-webkit系列(00):什麼是node-webkit?

來源:互聯網
上載者:User

原文地址:My Github Blog

這兩個月來接觸到一個開源項目:node-webkit(項目地址:https://github.com/rogerwang/node-webkit),也做了一點點小小的Code Contribution。打算開始寫一些文章,介紹一下這個開源項目,以及相關的技術細節實現。這是第0篇,就先作為一個簡要的介紹吧。

是什嗎?node-webkit是一個基於chromium和node.js實現的應用程式運行時環境,也即是說我們可以通過HTML,CSS,JavaScript實現一個本地化的應用程式。整個項目最具創意的部分就是將node.js整合進來,使得應用開發人員能夠直接在DOM裡使用node.js模組,大大增強了Web端JavaScript的能力。該項目是由Intel開源專案中心開發與維護的。  架構概覽目前node-webkit是基於chrome content api實現的,架構圖如下:   如果熟悉chrome這個瀏覽器架構的人一眼就可以看出來,node-webkit所處的層次與chrome是一致的,換句話說:node-webkit就是一個功能極簡的web瀏覽器,它可以用來載入網頁,執行JS指令碼,不論是本地的html檔案還是伺服器端的檔案。
  • 至於什麼是chrome content api呢?該模組的主要功能是採用多進程(包含Browser進程,Render進程以及GPU進程)的模型渲染一個頁面。它包含了幾乎所有的HTML5的特性以及GPU加速渲染。該模組的目的就是讓想在應用程式中嵌入瀏覽器模組,但又不想包含全部瀏覽器所有功能的開發人員使用的。
  • 為什麼要採用chrome content api而不是其他?
    • Content API提供了公開且穩定的介面,且相對於CEF3更加靈活。CEF3也是基於Content API實現的一個可以將渲染網頁的功能嵌入到應用程式之中的架構,雖然其介面經過封裝後使用起來相比比較簡單和方便,但是當需要使用到Content API的很多功能時候,CEF3的介面可能做不到。
    • V8引擎的高效。眾所周知,V8引擎對於Javascript這門語言的重要性,chrome瀏覽器的成功也得益於其執行Javascript的快速!而對於node-webkit,作為一個本地化的應用程式運行環境,javascript代碼執行的效率也是至關重要的,使得應用程式與使用者之間的互動更接近Native Application的流暢性。
    • 前面介紹Content API的時候也提到了,HTML5的特性以及GPU加速,對WebGL等的支援。最新版本在html5test.com測試得到的分數是:460。 

 

如何使用其進行開發?

接下來的這個部分將完成一個簡單的應用程式。主要想體現的是:(1)使用node.js模組;(2)nw提供的增加本地化應用特性的API;(3)打包並發布你的應用程式。
  • 瞭解應用程式結構。如所示,每個應用程式都會有一個package.json檔案來描述應用程式的相關資訊以及初始視窗的屬性等。
                    樣本程式的package.json檔案內容如下:(關於各個參數所代表的含義可以在wiki上尋找:https://github.com/rogerwang/node-webkit/wiki/Manifest-format)                    index.html檔案的內容如下,該段代碼主要是使用node.js的fs模組讀取"E:/"目錄下的檔案夾,在每個檔案夾的點擊事件中,我們調用node-webkit          中提供的shell介面在視窗管理器中開啟該檔案夾。          
  • 打包應用並發布。具體的打包方法https://github.com/rogerwang/node-webkit/wiki/How-to-package-and-distribute-your-apps。
           扯點node-webkit與chrome packaged app的不同。
  • 更少的開發限制,更自由:在node-webkit中,我們可以發現其sandbox特性已經被關閉。熟悉chrome packaged app或者extension開發的人都知道其對安全性的要求之嚴格,比如CSP的限制。而在node-webkit中,這些限制都不存在,作為一個本地化的應用程式運行時環境,我個人覺得這個是非常重要的一點!
  • 更本地化的介面:node-webkit實現了很多有關視窗操作的API,同時也實現了像功能表列,系統的托盤表徵圖支援,系統剪貼簿等的API,目前還在不斷的完善中。(我自己也參與到了一部分API的開發中,同時也修複了一些小bug。)
 最後:目前採用node-webkit開發出來的應用程式列表:https://github.com/rogerwang/node-webkit/wiki/List-of-apps-and-companies-using-node-webkit,據我所知道LightTable 也是基於node-webkit實現的。我的Github:@zhchbin

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.