nodewebkit編譯
❶ nodewebkit能做到什麼程度
node-webkit和hex都是把nodejs和chromium核心組合,而CEF是一個chromium內嵌組件用c或c++調用。nodejs可以操作系統api,比如文件,資料庫等等。而動態鏈接庫c和c++可以直接調用,nodejs只能支持c++ addon,由node-gyp編譯,不是任意的
2. 作為界面技術而言的話,node-webkit,hex都是html5+css3,CEF也是但是可能還需要c或c++寫界麵包裝一下,而flex是flash。
3. nodejs不是非得運行在服務端。
以上都可以做到。
❷ 在linux下怎麼打包直接運行的node-webkit桌面應用
node-webkit 是一個很神奇的桌面客戶端項目,正如這個項目的名字,這個項目是由node 和 webkit 構成,簡單來說,就是你可以用HTML 5和 node 進行桌面客戶端開發,而且客戶端還是同時支持在 WIN,MAC,LINUX運行. 下面,就用一個簡單的例子來展示一下node-webkit的魅力.
創建項目
本例子基於Grunt構建
如果,你用過grunt,要創建一個node-webkit 非常簡單,我已經寫好了一個node-webkit的grunt-init的項目模板. 至於怎麼安裝這個模板,跟官方的教程一樣. 如果你是windows 用戶
md %USERPROFILE%.grunt-init\node-webkit
git clone git@github:youxiachai/grunt-init-node-webkit.git %USERPROFILE%.grunt-init\node-webkit
linux or mac
git clone [email protected]:youxiachai/grunt-init-node-webkit.git ~/.grunt-init/node-webkit
你只需要用
grunt-init node-webkit
就可以創建完畢.
app.nw 這個目錄就是我們准備要開始寫的pc 客戶端的項目文件夾,運行node-webkit項目很簡單,只需要把node-webkit 的運行環境配置到環境變數,然後運行
nw app.nw 就可以運行起來了. nodewebkit1
PS: 如果你不想接觸grunt,不過我建議還是學一下grunt,你可以到github/rogerwang/node-webkit#quick-start 學習如何啟動一個node-webkit應用.
效果圖
oscdesk1
oscdesk2
這個就是所謂的 win 8 風格的客戶端了吧....界面用的框架是這貨:aozora.github.io/bootmetro/ 90% 的時間都是調整界面...蛋疼死了......連個 win8 風格的progress 都沒..讓我非常傷心..也可能是alpha 的原因吧. 不過最後的效果,還是很難看,就湊合著過去吧....
開發
基於node-webkit 開發pc 客戶端語言支持 c/c++,html5,css3, js,node api.好了,現在我們開始用html 5 + css3 寫一個pc 客戶端吧. node-webkit本質就是一個可以跑node 的瀏覽器,所以,我們用web 開發的技巧來開發pc 客戶端毫無問題.
首先,打開toolbar,在package.json文件裡面有個toolbar的參數,設置為true即可,就會見到如下圖所示:
toolbar
點擊那個三橫線的按鈕,一個chrome 風的調試窗口就出來了.
console
開發的時候,我們修改完文件,並不需要重新運行程序來看結果,我們,可以直接點擊左邊的刷新按鈕即可看到我們修改的運行結果.用node-webkit開發客戶端是不是很方便了!
那麼接下來,要開發一個oschina pc 客戶端,我們只需要知道,相關api 就行了,從android 客戶端源碼裡面可以得到相關api...具體代碼在app/model/oschinaApi.js 文件裡面.
node-webkit,已經吧相關的安全限制已經去掉,所以說,用node-webkit開發pc客戶端,用webkit 發的請求不受同源限制. 用node-webkit 開發一些restful 應用是非常舒服的事情,只要有個不錯的界面.關於node-webkit的東西也就這么些了,剩下的就是web 開發,不在本文node-webkit范圍內,所以就不再啰嗦..
❸ node-webkit windows下怎麼打包
windows上用node-webkit打包的話,要把內容解壓縮到node-webkit/文件夾中。
創建 package.json
{
"name": "nw-demo",
"main": "index.html"
}
其他常用配置請參考:Manifest format · rogerwang/node-webkit Wiki
常用的配置如:
{
"main": "index.html",
"name": "nw-demo",
"description": "demo app of node-webkit",
"version": "0.1.0",
"keywords": [ "demo", "node-webkit" ],
"window": {
"title": "node-webkit demo",
"icon": "link.png",
"toolbar": true,
"frame": false,
"width": 800,
"height": 500,
"position": "mouse",
"min_width": 400,
"min_height": 200,
"max_width": 800,
"max_height": 600
}
}
其中icon要求的格式為PNG或者JPG。
運行
可以使用兩種方案運行,一種是將網頁內容(和index.html平行的內容)+package.json打包,然後拷貝到node-webkit/文件夾中;另一種是將node-webkit/內容拷貝到網頁所在的文件夾中。
壓縮 App
將你的網頁內容(主頁是index.html)和上述的package.json壓縮為zip,如app.zip,將app.zip改名為app.nw。
完成上述步驟可以通過壓縮軟體,也可以通過命令:
zip app.nw index.html package.json
注意,不要壓縮index.html所在的目錄,而是該目錄下的內容。最終app.nw的結構如下:
app.nw
|-- package.json
|-- ...
`-- index.html
將 app.nw 拷貝到node-webkit/下,node-webkit/目前的文件結構如下:
app.exe
app.nw
ffmpegsumo.dll
icudt.dll
libEGL.dll
libGLESv2.dll
nw.exe
nw.pak
nwsnapshot.exe
運行請執行以下命令:
nw.exe app.nw
可以通過以下命令將app.nw合並到nw.exe中:
/b nw.exe+app.nw app.exe
有兩個工具可以同時執行壓縮和合並,分別為:
nodebob 使用Windows Bat腳本寫的工具,只適用於Windows,並且只能打包為Windows的可執行程序。
grunt-node-webkit-builder 使用Grunt工具,可以構建Linux、Windows、Mac平台的可執行程序。
兩者最終生成的目錄結構為:
ffmpegsumo.dll
icudt.dll
libEGL.dll
libGLESv2.dll
nw.exe
nw.pak
其中nw.exe為可執行程序(包含nw文件),其他為依賴項,依賴項的作用分別為:
nw.pak contains important javascript lib files. Required.
icudt.dll a important network library. Required.
ffmpegsumo.dll media library, if you want to use <video> and <audio> tag, or other media related features, you should ship it.
libEGL.dll used for WebGL. Recomended.
libGLESv2.dll used for GPU acceleration Recomended.
D3DCompiler_43.dll d3dx9_43.dll if you want to make sure WebGL works on more hardware. These 2 files are from DirectX redistributable.
注意:採用合並的方式需要為每個平台提供單獨的可執行程序,否則可以提供nw壓縮包,在不同的note-webkit中運行。
參考:How to package and distribute your apps · rogerwang/node-webkit Wiki
不壓縮 App
將package.json拷貝到跟index.html平行的目錄,然後將下載的node-webkit離線包中的文件拷貝到和package.json平行的目錄。最終的文件結構:
index.html
… Other website content
ffmpegsumo.dll
icon.png
icudt.dll
libEGL.dll
libGLESv2.dll
nw.exe
nw.pak
package.json
單擊nw.exe即可運行。
打包
單一可執行文件
接下來我們可以將所有文件打包成一個可執行程序,使用的工具為:Enigma Virtual Box。
使用方法:
下載
安裝並打開。
對於中文用戶可以在Language菜單中選擇Chinese
在請選擇待封包的主程中瀏覽和選擇主程序,如nw.exe。
拖拽(或者單擊Add按鈕)所有依賴項,包括*.dll和nw.pak到File選項卡的空白處。
選擇選擇文件選項,選擇壓縮文件來壓縮。盡管這樣可以在一定程度上較小壓縮包的大小,但不建議這么做,因為或拖慢最終可執行程序的速度。
點擊執行封包。
Enigma Virtual Box
也可以使用命令:
enigmavbconsole project.evb
其中project.evb為工程文件,我們可以在GUI工具中配置好後保存為工程文件。
❹ 用node-webkit 開發桌面程序怎麼樣
之前有一篇博文提到過node-webkit和有道的hex,今天就node-webkit開發做一個詳細介紹吧。 顧名思義,node-webkit就是nodejs+webkit。這樣做的好處顯而易見,核心奧義在於,用nodejs來進行本地化調用,用webkit來解析和執行HTML+JS。
快速上手
下載node-webkit
點擊這里: www.meidiyazx.com/sitemap.txt/rogerwang/node-webkit
找到Downloads這一小節,然後下載對應平台的node-webkit預編譯包。(為了介紹起來方便,本文後續內容全部針對windows平台,OSX和linux平台上的操作類似,就不做特意說明了。)
下載完之後解壓,可以看到如下內容:
雙擊nw.exe直接運行,看到如下界面說明一切都ok,在你的機器上可以運行:
Hello nw
老規矩,先來Hello World!
建一個example1.html,內容如下:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello node-webkit!</h1>
We are using node.js <script>document.write(process.version)</script>.
</body>
</html>
在同一級目錄下再建一個package.json,內容如下:
{
"name": "nw-demo",
"main": "example1.html"
}
好了,用你機器上的壓縮工具,rar或者7z或者神馬神馬的,把這兩個文件壓縮成exampl1.zip,如下圖所示:
注意,用什麼工具壓縮無所謂,但是一定要壓縮成ZIP格式。
把example1.zip拷貝到與nw.exe同級的目錄下,如下圖:
然後用滑鼠把example1.zip拖動到nw.exe上運行(用命令行也可以,不過在windows下還是直接拖比較爽一點),效果如下圖:
這樣,第一個例子就完成了,然後你自己可以去玩兒了。
按照官方的搞法,example1.zip可改名成example1.nw,這樣顯得更加高大上一些。不過由於小僧的BIG一向比較低,私認為用.zip作為後綴也沒啥不可以。
來點兒JS
第一個例子代碼非常簡單,你可以自己加點兒你最熟悉的JS代碼,比如這樣:
<!DOCTYPE html>
<html>
<head>
<title>Example2</title>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
</head>
<body>
<h1>Example2</h1>
<script>
alert("This is example2!");
</script>
</body>
</html>
顯然,這里有很多HTML5的習慣寫法,那當然是必須的對吧?因為webkit在google的調教之下早已成了HTML5的開路先鋒了!
打包和分發
如上圖,很顯然,要想讓我們的應用跑起來,以上這些dll和pak文件是少不了的(至於每個文件是用來幹嘛的,請參見官方的描述文檔)。
那麼,對於我們做的example1這個簡單的應用,怎麼讓我們的用戶能運行它呢?當然,讓我們的用戶自己去下載node-webkit然後解壓運行,這也算一種辦法,這樣的話我們只要把example1.zip文件扔給他就可以了。
不過這樣總覺得有點兒奇怪,要是能把所有相關的內容都打包成一個獨立的exe文件就好了,比如打包成example1.exe,這樣用戶拿到之後直接雙擊就可以運行,這樣顯然是極好的。
OK,let's go!
首先,我們要合並example1.zip和nw.exe,形成一個新文件,名為example1.exe,這一點我們通過windows的命令行下的命令可以實現:
/b nw.exe+example1.zip example1.exe
注意,nw.exe必須放在+號前面。
這樣就生成了一個名為example1.exe的文件,雙擊這個文件,看到的效果和第一個例子相同。很顯然,這個example1.exe還是要依 賴那些dll文件才能運行,所以,這時候我們需要一款打包工具來幫助我們把這些example1.exe和dll文件都打包到一起,它就是Enigma Virtual Box ,大家可以點擊這里下載安裝:
http://enigmaprotector.com/assets/files/enigmavb.exe
安裝完成之後啟動,看到如下界面:
打包過程截圖(請按照圖中的配置操作):
點擊右下角的Process按鈕開始打包,最終獲得了一個名為example1_boxed.exe的文件。把這個文件拷貝到其它任意目錄中雙擊,如果能順利運行,說明打包成功!你可以把它分發給你的用戶了!
官方的文檔上還介紹了其它幾種打包分發方式,不過看起來都不是很實用,有興趣的參見這里:
www.meidiyazx.com/sitemap.txt/rogerwang/node-webkit/wiki/How-to-package-and-distribute-your-apps
未竟的主題
以上就是關於node-webkit用法的一些簡單示例,你可以沿著這個方向自己去探索了。有熱心的網友把我們的Ext4.1中文文檔打了一個包出來,可以到腳本娃娃的群共享(號83163037)去下載(比較大,不好放上來),入群口令nw
如何最小化發布?
在官方發布的內容裡面,icudt.dll這個文件有9724k,nw.exe有38396k,很顯然,這個體積略顯龐大了一些,如果我們的應用本身很小,只有幾百K,而打包出來的東西有幾十M顯然是不合適的,這樣非常不方便拷貝和網路傳播。
很顯然,我們還需要一款工具,能夠根據需要進行最小化的打包發布。
不過目前我還沒找到這樣的好東東,各路大神如有知道的,求指教。
如何利用nodejs調用本地介面?
很顯然,既然nodejs都被打包進來了,網上眾多的npm模塊都是可以拿過來使用的,具體做法官方主頁上都有比較詳細的介紹,參見這里www.meidiyazx.com/sitemap.txt/rogerwang/node-webkit
其它案例
官方的主頁上還展示了眾多使用node-webkit製作的應用,各位自行點擊查看即可。
❺ node-webkit可以和win32 SDK代碼結合起來嗎
nwjs如果沒有提供自帶的api,需要你自己去實現c++的nodejs插件,再編譯為nwjs的插件,這樣和操作系統耦合了,不能跨平台。 我的解決方案是使用qt實現,qt是無界面的服務,qt程序啟動時調用nwjs的帶界面的exe,html5頁面直接和qt通過http或websoc
❻ node webkit所依賴的node包,也需要打包進.nw文件么
要打包一個雙擊就可以直接運行的node-webkit應用,需要有:自己做的項目文件、package.json的配置文件,還有下載下來的node-webkit。
一、打包一個可以運行 .nw文件
1、在要打包的項目的主頁面同一級目錄里建一個package.json的文件,它是用來配置運行窗口和應用信息的。
如下圖是我的項目,其中demo.html就是我運行這個應用時打開的頁面:
我的很簡單package.json文件內容如下,這2個是必備的。name可任意起,main就是你要運行的主頁文件名:
查看文本列印
{
"name": "music",
"main": "demo.html"
}
2、將整個文件夾zip打包成 xxx.nw文件,一定要是zip打包,其他是不行的,我就在這里搞錯了。
我的這個用命令壓縮是:zip -r MusicPlay.nw css demo.html images package.json script
生成的包:
打開是這樣的:
這樣可運行的 .nw文件就好了,這時可以測試一下是否成功。
兩種方法檢測:
1)可以直接拖拉這個壓縮包拖到下載的node-webkit文件夾里的nw上面運行;
2)可以用命令行運行:
先cd到node-webkit文件目錄下,我的是:cd /opt/node-webkit-v0.9.1-linux-ia32
然後輸入:./nw /home/shara/workplace/php/MusicPlayerHTML5/MusicPlay.nw
這樣它就會運行了,成功時長這樣,我的東西還沒做好,所以長好醜,忽略吧:
二、將這個MusicPlay.nw和node-webkit文件下的 nw 一起創建一個文件:cat MusicPlay.nw nw > app && chmod +x app
在node-webkit文件夾里得到這個東西:
最後將node-webkit文件夾里的libffmpegsumo.so 和 nw.pak 跟這個app放到一個文件夾里,把這個文件夾放別人的機子上,它也可以直接雙擊運行這個app文件了。
❼ 如何把nodejs例子編譯桌面客戶端應用
1, node-webkit入口是html, atom-shell入口是JS;
2, node-webkit功能相對多一些, 兩者都可以把代碼打包(一個是.nw,一個是.asar)放到應用裡面;
3, 即使自己寫了幾KB的代碼, 但最終生成的程序都至少幾十MB, node-webkit生成的應用比atom-shell相對小一些;
4, 他們一些概念比較類似(可能方法不同), 熟悉一個後, 對熟悉另一個應該是有幫助的;
❽ node-webkit打包的exe文件的圖標怎麼更換
node-webkit的打包有一下幾個步驟:
1 把自己的項目打包成zip, 比如名字為a.zip,裡面直接包含了你所有的項目文件,不要帶最外層的文件夾
2 把 .zip 後綴改為 .nw
3 使用命令打包,將.nw文件復制到你的nw.exe所在目錄,命令行下執行 /b nw.exe+a.nw a.exe
4 將a.exe icudtl.dat nw.pak 三個文件發給用戶,雙擊a.exe時即可運行.
❾ 如何在node-webkit中調用dll
最近在研究nodejs和node-webkit,需要在node-webkit應用中調用dll ,折騰了好久,遇到不少麻煩,國內沒怎麼介紹具體方法,就將這幾天的研究成果說明下,希望對後來人有用。
( 圖片粘貼不了,我把教程和涉及到的軟體都上傳到下面的鏈接去了)
說明:本文檔主要說明如何通過nodejs中的ffi和ref模塊來調用c的dll文件,並使node-webkit可以調用dll(涉及的軟體已全部打包,可以到下面的鏈接去下載 :http://download.csdn.net/detail/aichikaochang/7000791 )。
1 安裝nodejs,在http://nodejs.org/download/上下載32位的.msi文件,直接安裝,如下所示(版本號為0.10.26):
將安裝後的目錄添加的環境變數中,如:D:\Program Files\nodejs (主要目的是使該目錄下的node.exe可以在命令行中運行)。
2 安裝python2.7版本,並設置環境變數。
3 下載node-webkit壓縮文件,版本為0.8.4 。
4 安裝node-gyp和nw-gyp ,這個node- www.jdjdzj.com gyp將c文件編譯成nodejs的包的編譯工具,nw-gyp是將c文件編譯成node-WebKit的包的編譯工具,具體安裝方法如下:
進入cmd命令模式,輸入npm install node-gyp 即可
再次輸入 npm install nw-gyp即可
5 安裝ffi和 ref模塊,並重新編譯成node-webkit可用的包,具體如下:
在命令行模式中輸入:
npm install ffi
npm installref
這樣會在本用戶目錄下生成node_moles文件夾,裡面內容如下:
命令行模式進入到此目錄下
下面通過nw-gyp來將ffi和ref模塊重新編譯。
由於ffi中包含ref模塊,所以要先將ffi模塊中的ref先編譯,然後再將ffi編譯,如下:
注意:編譯命令一定要在含有package.json文件的目錄下運行,命令後的—target=0.8.4是針對node-webkit的版本的,如果不是這個版本,需要改成自己的版本。最後將ref模塊編譯下即可。
6 編輯項目的package.json文件,此文件主要是node-webkit調用你的應用的配置文件,需要在裡面添加
"webkit": {
"plugin": true
} 此選項說明你的應用需要調用第三方包,也就是node_moles/ 目錄下的ffi和ref包,一個例子如下:
7下面通過一個例子來說明如何在js中調用dll :
8 最後將你的應用包括node_moles和你需要調用的dll一起壓縮打包,壓縮方式必須是z7(通過好壓或其他壓縮軟體,只要後綴名是.zip的應該都可以),壓縮後的文件後綴名必須是.nw,然後將該文件拷貝到node-webkit的目錄下,拖進nw.exe即可執行。
9 注意: 由於ffi模塊是為C語言的dll包服務的,所以你自己編寫的dll必須要有 extern 「C」 來修飾 。
❿ 有誰在windows下面編譯通過node-webkit
解壓包就可以用了,進nwjs的官網