新建一個 Vue 項目javascript
vue create electron-vue
安裝 cross-env
electron
html
npm install cross-env electron --save-dev
根目錄下新建electron/main.js
vue
const {app, BrowserWindow} = require('electron') const path = require('path') // 保持對window對象的全局引用,若是不這麼作的話,當JavaScript對象被 // 垃圾回收的時候,window對象將會自動的關閉 let win function createWindow () { // 建立瀏覽器窗口。 win = new BrowserWindow({width: 800, height: 600}) if (process.env.NODE_ENV === 'development') { // 而後加載應用的 index.html。 win.loadURL('http://localhost:9999') } else { win.loadFile(path.join(__dirname, '../dist/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 導入。
編輯 package.json
java
{ "main": "electron/main.js", "scripts": { "serve": "vue-cli-service serve --port 9999", "electron:dev": "cross-env NODE_ENV=development electron electron/main.js" }, }
運行git
npm run serve npm run electron:dev
安裝 electron-builder
github
npm install electron-builder --save-dev
配置 package.json
web
{ "build": { "appId": "your.id", "directories": { "output": "build" }, "mac": { "category": "your.app.category.type" } }, "scripts": { "pack": "electron-builder --dir", "dist": "electron-builder" } }
新建 vue.config.js
vue-cli
module.exports = { publicPath: './' }
打包shell
npm run build npm run pack
Electron 的main
進程和renderer
進程分開進行開發,能夠經過ipcMain
和ipcRenderer
進行通訊,數據流清晰,開發簡單。npm