NW.js桌面應用開發(一)


NWjs中文網

Electron中文網

一些需要了解的歷史與特性,其實就是 NW.js 和 Electron 的爭議,建議還是親自閱讀一下各自的官網說明

1、下載SDK版工具

淘寶NPM鏡像下載,速度飛快,我選擇最新的 https://npm.taobao.org/mirrors/nwjs/v0.41.2/nwjs-sdk-v0.41.2-win-x64.zip 版本,對應 Chromium 77 + Node 12.9.1

然后就可以按照官網快速入門例子,就像構建一個Node項目一樣從package.json起手,首先構建一個靜態頁面的應用。

2、編輯源文件

准備好package.json和index.html兩個文件

{
    "name": "helloworld",
    "main": "index.html"
}

注意:Windows系統的默認編碼是GBK,而我們經常寫代碼用的是UTF-8(VS除外),這里index,html的編碼格式就得改一改了,否則就像CMD黑窗口一樣,UTF-8中文顯示亂碼

<!DOCTYPE html>
<html>
  <head>
    <title>Hello World-這是標題!</title>
  </head>
  <body>
    <h1>Hello World-這是正文!</h1>
  </body>
</html>

3、運行應用

在這之前,我先配置一下環境變量,當然你也可以直接把應用拖到解壓后的 nwjs-sdk-v0.41.2-win-x64 目錄下去運行,不過作為一個balabalabala...,我還是要配個SDK的環境變量,就可以在別的目錄下寫應用代碼了

注意:准備好靜態文件,配好環境變量后要開始運行應用了,這里用的是你的應用的整個目錄,而不是package.json或index.html某個文件,效果如下

 4、打包應用

參考 https://www.jianshu.com/p/3337701f9b80,或者手動打包 https://www.cnblogs.com/sener/p/8366164.html

這個比較坑,方式有好幾種,這里選擇推薦的 nwjs-builder-phoenix 工具打包,試了幾次才成功

首先需要把package.json文件補全

{
  "name": "helloworld",
  "version": "0.1.0",
  "description": "this is first nw app",
  "main": "index.html",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dist": "build --tasks win-x64 --mirror https://npm.taobao.org/mirrors/nwjs/ .",
    "start": "run --x64 --mirror https://npm.taobao.org/mirrors/nwjs/ ."
  },
  "author": "jxh",
  "license": "ISC",
  "build": {
    "nwVersion": "0.41.2"
  },
  "dependencies": {},
  "devDependencies": {
    "nwjs-builder-phoenix": "^1.15.0"
  },
  "window": {
    "title": "hello nw",
    "width": 840,
    "height": 600,
    "toolbar": true,
    "resizable": false,
    "icon": "./hello.png"
  }
}

前面的名稱,版本,描述不用多說,mian是應用入口,參照官網說明

scripts是打包腳本,參照 https://github.com/evshiron/nwjs-builder-phoenix 說明,里面有個配置例子 https://github.com/evshiron/nwjs-builder-phoenix/blob/master/assets/project/package.json

--tasks win-x64 是需要打包生成的的平台文件,可以一次性打包其他平台的,用 , 隔開,比如win-x86

--mirror https://npm.taobao.org/mirrors/nwjs/ . 是下載nwjs的鏡像地址

window是應用窗口的一些配置

打包的時候直接運行 npm run dist 開始打包,就會生成所有文件了,運行結果如下,其實就是自動下載NWjs,然后把源文件copy到dist下

PS E:\Code\NW_Learn\01_HelloWorld> npm run dist                                                                         
> helloworld@0.1.0 dist E:\Code\NW_Learn\01_HelloWorld
> build --tasks win-x64 --mirror https://npm.taobao.org/mirrors/nwjs/ .

Starting building tasks... { tasks: [ [ 'win', 'x64' ] ], concurrent: false }
Building for win, x64 starts...
Fetching NW.js binary... { platform: 'win',
  arch: 'x64',
  version: '0.41.2',
  flavor: 'normal' }

[==================================================] 6002.55KB/s 0.0s

Building targets...
Building directory target starts...
Building directory target ends within 11.59s.
Building for win, x64 ends within 28.89s.
PS E:\Code\NW_Learn\01_HelloWorld> 

然后在當前目錄下生成 dist/helloworld-0.1.0-win-x64目錄

 點擊helloworld.exe就可以執行了,查看其詳細信息,就是配置的那些

5、遇見的坑

5.1 不要使用 cnpm 安裝nwjs-builder-phoenix,我的好像莫名的多下了一些依賴文件,然后打包的時候發生了莫名的化學反應,導致node_modules變成了1.3G,還自動把 node_modules 復制到 dist 下去了,然后打包出來的是個巨大的廢包,還是手動  npm config set registry https://registry.npm.taobao.org 設一下鏡像吧

5.2 千萬不要把這句話抄過來,否則生成好幾個平台的目錄可慢了

"dist": "build --tasks win-x86,win-x64,linux-x86,linux-x64,mac-x64 --mirror https://dl.nwjs.io/ .",

5.3 這個生成壓縮文件的也還是不要選了

"targets": [
      "zip",
      "nsis7z"
 ]

5.4 可能是由於 5.1 的原因,我打包一直生成一對廢品,后來刪了 node_modules重新用npm安裝,再打包就好了

6、一些說明

就一個helloworld,打包后的文件夾有211M,壓縮后63M,是因為這東西就是個Chrome瀏覽器

不推薦將整個應用打包為一個exe文件,雖然看起來逼格高一點,但是不好更新

7、Electron

又試了試electron,文檔確實比NWjs齊全很多,起手也非常簡單

7.1、開始構建

GitHub提供了簡單的 QUICK-START 項目,首先從 https://github.com/electron/electron-quick-start 把代碼下下來

然后在目錄下 npm install 安裝依賴

然后 npm start 啟動就可以了

 這個不會中文亂碼,不需要改GBK

7.2、打包

參照  Electron桌面應用打包流程 和 官網打包教程

7.3、補充說明

GitHub上Electron主要有三個部分

electron: 項目源碼

electron-quick-start: 快速構建示例

electron-api-demos:api演示程序,配合上quick-start用來試驗非常友好,要注意的一點是這個項目下下來后 npm install 可能會卡在下載依賴的地方不動了,因為他自己依賴了 electron-download 模塊,該模塊會自己從GitHub上去下載electron的源碼,而不是用npm,所以要是卡住了可以直接ctrl+c終止,然后手動 npm install electron就可以了,或者直接用cnpm install也可以一次性通過,不過不建議這么做(打包可能出問題)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM