用node-webkit把web應用打包成桌面應用(windows環(huán)境)
node-webkit是一個Chromium和node.js上的結(jié)合體,通過它我們可以把建立在chrome瀏覽器和node.js上的web應用打包成桌面應用,而且還可以跨平臺的哦。很顯然比起傳統(tǒng)的桌面應用,在某些特定領域用html5+css3+js開發(fā)的web應用更加簡單和高效,而且還可以使用node.js的功能,所以node-webkit還是很有用處的。
下面我通過一個簡單的demo來介紹怎么樣把一個web應用打包成一個可執(zhí)行文件(這里只介紹windows環(huán)境)
首先新建一個index.html文件,作為我們這個demo的入口頁面,我們暫且就把這個頁面當成一個完整的web應用吧。內(nèi)容隨便寫點什么,比如:
然后創(chuàng)建配置文件 package.json,內(nèi)容如下:
其中的main屬性就是用來指定入口文件的,這個屬性的值可以是本地文件,也可以是遠程網(wǎng)址,這樣就相當于可以把一個遠程的web應用直接變?yōu)橐粋€桌面應用了。
除了name與main這兩個屬性外,還有很多其他有用的屬性可以配置,比如指定應用的圖標,顯不顯示瀏覽器的工具欄,指定瀏覽器的初始大小等等,具體的配置參數(shù)文檔可看這里https://github.com/rogerwang/node-webkit/wiki/Manifest-format
現(xiàn)在我們有了兩個文件了。
然后將index.html和package.json這兩個文件壓縮到一個zip壓縮包里,命名為app.zip
現(xiàn)在app.zip這個壓縮包里的內(nèi)容應該是這樣的:
然后把app.zip這個文件的擴展名改為nw,變?yōu)?app.nw
然后下載一個windows版本的node-webkit,解壓后得到一個文件夾:
之后我們之前得到的app.nw這個文件就可以用nw.exe來執(zhí)行了,直接把app.nw拖到nw.exe上就可以了。運行結(jié)果如下:
跟在chrome中打開index.html這個頁面的效果差不多,當然你可以通過配置package.json這個文件,來隱藏瀏覽器的工具欄或邊框,來使它更像是一個桌面軟件。
因為nw文件的運行需要node-webkit環(huán)境的支持,所以我們還需要把app.nw這個文件跟node-webkit的環(huán)境文件一起打包成一個可執(zhí)行文件。
首先打開windows的cmd,然后輸入如下命令:
copy /b nw.exe+app.nw app.exe
注意文件路徑要根據(jù)你的實際情況進行變動,這里假設app.nw放在了node-webkit的主文件夾里,然后輸出的app.exe也會在這個文件夾里。
執(zhí)行命令后我們得到了 app.exe 這個可執(zhí)行文件。
到了這步,我們已經(jīng)得到了app.exe這個文件,但如果只有app.exe這個文件還是不夠的,這個可執(zhí)行文件的運行還需要幾個dll文件的支持。
其中 nw.pak 與 icudt.dll 這個兩個文件是必須要的。
ffmpegsumo.dll 文件是媒體支持文件,如果你的html頁面中用到了<video>或<audio>或其它與媒體相關的東西,則必須帶上這個文件。
libEGL.dll 和 libGLESv2.dll 這個兩個文件則是使用webGL或GPU必須要的
最后我們得到的就是這樣一個文件夾:
執(zhí)行app.exe就可以運行我們的demo了。
但我們大多數(shù)人想的是給用戶一個exe文件,用戶就可以使用了,不用再附帶一些其他文件。
嗯,所以我們還可以把app.exe跟其他的文件再打包一次,把上圖中的所有文件變成一個可執(zhí)行文件,用戶只要得到這個文件,就能運行我們的應用了。
做這步我們需要一個軟件叫Enigma Virtual Box,首先下載和安裝這個軟件,然后打開它。
然后在Enter Input File Name那里輸入我們的app.exe的路徑,在Enter Output File Name那里填寫我們要把打包出來的可執(zhí)行文件輸出到哪里。最后是把除app.exe外的其它文件拖入到Files那里,遇到提示的話默認就可以了。
最后點擊右下角的Process按鈕,就大功告成了。
最后我們得到了一個 app_boxed.exe 的文件,只要把這個文件交給用戶,用戶就可以運行了。
node-webkit雖然方便,但有個很大的缺點是得到的可執(zhí)行文件有點大,大家在可以在衡量利弊后決定使不使用。
相關文章
前端自動化開發(fā)之Node.js的環(huán)境搭建教程
這篇文章主要介紹了前端自動化開發(fā)之Node.js環(huán)境搭建的相關資料,文中介紹的非常詳細,對大家學習或者使用node.js具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-04-04
5分鐘教你用nodeJS手寫一個mock數(shù)據(jù)服務器的方法
這篇文章主要介紹了5分鐘教你用nodeJS手寫一個mock數(shù)據(jù)服務器的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09
Node.js?使用?zlib?內(nèi)置模塊進行?gzip?壓縮
這篇文章主要介紹了Node.js?使用?zlib?內(nèi)置模塊進行?gzip?壓縮,nodejs為我們提供了一個zlib內(nèi)置模塊,我們可以使用它其中的gzip方法來對傳遞的數(shù)據(jù)進行壓縮,從而提高數(shù)據(jù)傳遞效率,更多相關內(nèi)容需要的朋友可以參考一下2022-09-09
Node.js處理I/O數(shù)據(jù)之使用Buffer模塊緩沖數(shù)據(jù)
這篇文章介紹了Node.js使用Buffer模塊緩沖數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
為nuxt項目寫一個面包屑cli工具實現(xiàn)自動生成頁面與面包屑配置
這篇文章主要介紹了為nuxt項目寫一個面包屑cli工具實現(xiàn)自動生成頁面與面包屑配置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09
node.js連接mongoDB數(shù)據(jù)庫 快速搭建自己的web服務
這篇文章主要為大家詳細介紹了node.js連接mongoDB數(shù)據(jù)庫,如何快速搭建自己的web服務,感興趣的小伙伴們可以參考一下2016-04-04













