Electron 入門筆記 - PC端WebApp開發 H5變EXE

需求是把H5頁面變成PC端的可執行程序
最好是Windows Mac Linux 3端都支持
而且不能像java python這種需要用戶自己安裝依賴的
百度一番以後決定用Electron來實現。
他的原理就是自帶一個chrome內核,在客戶端本地運行h5代碼
不過node和Electron 我都是剛學,所以本文章只是分享一下折騰的過程

基於這個官方入門例子
https://electronjs.org/docs/tutorial/first-app#trying-this-example

一、準備階段

首先你得有node和npm環境
windows用戶可有去node官網下載安裝包安裝
https://nodejs.org/zh-cn/

裝完以後建議再裝一個cnpm,讓速度變快
用法就是把本文後面所有npm install 命令 變成 cnpm install
後面就不再贅述了 統一用npm舉例
http://npm.taobao.org/

二、第一個項目

新建一個項目文件夾,創建3個文件

your-app/
├── package.json
├── main.js
└── index.html

package.json

{
  "name": "your-app",
  "version": "0.1.0",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  }
}

main.js

const { app, BrowserWindow } = require('electron')

// 保持對window對象的全局引用,如果不這麼做的話,當JavaScript對象被
// 垃圾回收的時候,window對象將會自動的關閉
let win

function createWindow () {
  // 創建瀏覽器窗口。
  win = new BrowserWindow({ width: 800, height: 600 })

  // 然後加載應用的 index.html。
  win.loadFile('index.html')

  // 打開開發者工具
  win.webContents.openDevTools()

  // 當 window 被關閉,這個事件會被觸發。
  win.on('closed', () => {
    // 取消引用 window 對象,如果你的應用支持多窗口的話,
    // 通常會把多個 window 對象存放在一個數組裏面,
    // 與此同時,你應該刪除相應的元素。
    win = null
  })
}

// Electron 會在初始化後並準備
// 創建瀏覽器窗口時,調用這個函數。
// 部分 API 在 ready 事件觸發後才能使用。
app.on('ready', createWindow)

// 當全部窗口關閉時退出。
app.on('window-all-closed', () => {
  // 在 macOS 上,除非用戶用 Cmd + Q 確定地退出,
  // 否則絕大部分應用及其菜單欄會保持激活。
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  // 在macOS上,當單擊dock圖標並且沒有其他窗口打開時,
  // 通常在應用程序中重新創建一個窗口。
  if (win === null) {
    createWindow()
  }
})

// 在這個文件中,你可以續寫應用剩下主進程代碼。
// 也可以拆分成幾個文件,然後用 require 導入。

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    We are using node <script>document.write(process.versions.node)</script>,
    Chrome <script>document.write(process.versions.chrome)</script>,
    and Electron <script>document.write(process.versions.electron)</script>.
  </body>
</html>

官方例子中是說在該目錄下直接執行這個命令

npm start

但實際遇到的情況是這樣的一段報錯
"electron不是內部或外部命令,也不是可運行的程序"。

百度半天雲裏霧裏
最終從某個回答裏找到了答案才恍然大悟!
根本沒裝過electron呀!!!
安裝electron

npm install electron -g

再cd到項目路徑下,執行啓動命令就可以了

npm start

登登噔噔


之後還可以再稍微加點料,改進一下

例如 在main.js稍作修改

  1. 取消彈出調試菜單
  2. 去掉菜單欄
// 打開開發者工具
// win.webContents.openDevTools()

// 去掉自帶的默認菜單欄
win.setMenu(null)

順便可以在根目錄下 再創建一個bat文件 一鍵啓動項目
run.bat

@echo off
npm start

最後
把事先已經開發好的H5項目
連着js css img json等依賴一起丟進來
入口是index.html
第一個webapp項目,就可以啓動了


執行run.bat

Duang~~~~ 一個簡單的H5應用就出現了,測試一下發現兼容性特別好!稍加修改就可以出爐了直接!
不過最好還是重寫一下頁面的佈局,以及按照Electron給的API調整一下代碼,以提升用體驗。


這裏剛好順便宣傳下我的壁紙網站
極簡壁紙 https://bzbeta.zzzmh.cn
(當然PC客戶端版本還在努力折騰中)

關於打包成exe

參考:https://www.cnblogs.com/kakayang/p/9559777.html

先安裝打包工具依賴

npm install electron-packager -g
修改

package.json
主要是添加了pack命令的參數 (別忘了給start後面加個英文逗號)

{
  "name": "wallpaper",
  "version": "0.0.1",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "pack": "electron-packager . wallpaper --win --out ../wallpaper_windows_64 --arch=x64 --app-version=0.0.1 --electron-version=4.0.4"
  }
}

參數大概的意思

“.”:需要打包的應用目錄(即當前目錄),
“wallpaper”:應用名稱,
“--win”:打包平臺(以Windows爲例),
“--out ../wallpaper_windows_64”:輸出目錄,
“--arch=64”:64位,
“--app-version=0.0.1”:應用版本,
“--electron-version=4.0.4”:electron版本

打包命令:

npm run pack

效果如下


END

目前就折騰到這一步
最後貼一下官方文檔地址
https://electronjs.org/docs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章