佛山外貿(mào)網(wǎng)站制作外貿(mào)推廣平臺哪個好
一. 簡介
首先,介紹下vite
和Electron
。
- Vite是一種新型前端構(gòu)建工具,能夠顯著提升前端開發(fā)體驗(yàn)。
- Electron是一個使用 JavaScript、HTML 和 CSS 構(gòu)建桌面應(yīng)用程序的框架。 嵌入Chromium和Node.js到二進(jìn)制的 Electron 允許您保持一個 JavaScript 代碼代碼庫并創(chuàng)建 在Windows上運(yùn)行的跨平臺應(yīng)用 macOS和Linux——不需要本地開發(fā) 經(jīng)驗(yàn)。
當(dāng)開始想用vue去開發(fā)一個桌面應(yīng)用時,首先去搜索下,了解到當(dāng)前如下兩種現(xiàn)成方案:
- electron-vue: 該項(xiàng)目集成度較好,封裝較為完整,中文搜索下來文章較多也是該方案,可以直接上手去使用。但是,問題在于其內(nèi)置electron的版本太低,寫文章時看到的版本是2.0.4,而最新的electron版本是15.1.2。
- Vue CLI Plugin Electron Builder: 該方案是集成到到
vue-cli
中使用,使用vue add electron-builder
后可直接上手,免去了基礎(chǔ)配置的步驟。但是其只能在vue-cli
下使用,無法配合vite
來使用。
因此,若要使用vite
和electron
,還需要自己來配置。
二. 創(chuàng)建一個Vite項(xiàng)目
1. 安裝 vite
yarn create vite
2. 創(chuàng)建項(xiàng)目
創(chuàng)建命令如下:
yarn create vite <your-vue-app-name> --template vue
此處創(chuàng)建一個項(xiàng)目,名為kuari。
yarn create vite kuari --template vue
3. 進(jìn)入且運(yùn)行
進(jìn)入項(xiàng)目,在運(yùn)行前需要先安裝下依賴。
cd kuari
yarn install
yarn dev
在運(yùn)行命令敲下的一瞬間,幾乎是已經(jīng)在運(yùn)行了,不愧是vite。此時按照輸出,打開地址預(yù)覽,即可看到初始化頁面。
至此一個基礎(chǔ)的vite項(xiàng)目創(chuàng)建完成。
三. 配置Electron
1. 官方文檔
在Electron官網(wǎng)的快速入門文檔中,有官方給出的利用html、javascript、css來創(chuàng)建一個electron應(yīng)用的案例,vite+electron的方案也借鑒其中。
2. 安裝
首先安裝electron至vite應(yīng)用。目前electron的版本為^15.1.2,
。
yarn add --dev electron
3. 配置文件
1)vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path' // 新增// https://vitejs.dev/config/
export default defineConfig({base: path.resolve(__dirname, './dist/'), // 新增plugins: [vue()]
})
2)main.js
創(chuàng)建一個新的文件main.js
,需要注意的是,該內(nèi)容中index.html
的加載路徑跟electron官網(wǎng)給的配置不同。
// main.js// 控制應(yīng)用生命周期和創(chuàng)建原生瀏覽器窗口的模組
const { app, BrowserWindow } = require('electron')
const path = require('path')function createWindow () {// 創(chuàng)建瀏覽器窗口const mainWindow = new BrowserWindow({width: 800,height: 600,webPreferences: {preload: path.join(__dirname, 'preload.js')}})// 加載 index.htmlmainWindow.loadFile('dist/index.html') // 此處跟electron官網(wǎng)路徑不同,需要注意// 打開開發(fā)工具// mainWindow.webContents.openDevTools()
}// 這段程序?qū)?Electron 結(jié)束初始化
// 和創(chuàng)建瀏覽器窗口的時候調(diào)用
// 部分 API 在 ready 事件觸發(fā)后才能使用。
app.whenReady().then(() => {createWindow()app.on('activate', function () {// 通常在 macOS 上,當(dāng)點(diǎn)擊 dock 中的應(yīng)用程序圖標(biāo)時,如果沒有其他// 打開的窗口,那么程序會重新創(chuàng)建一個窗口。if (BrowserWindow.getAllWindows().length === 0) createWindow()})
})// 除了 macOS 外,當(dāng)所有窗口都被關(guān)閉的時候退出程序。 因此,通常對程序和它們在
// 任務(wù)欄上的圖標(biāo)來說,應(yīng)當(dāng)保持活躍狀態(tài),直到用戶使用 Cmd + Q 退出。
app.on('window-all-closed', function () {if (process.platform !== 'darwin') app.quit()
})// 在這個文件中,你可以包含應(yīng)用程序剩余的所有部分的代碼,
// 也可以拆分成幾個文件,然后用 require 導(dǎo)入。
3)preload.js
創(chuàng)建一個新的文件preload.js
。
// preload.js// 所有Node.js API都可以在預(yù)加載過程中使用。
// 它擁有與Chrome擴(kuò)展一樣的沙盒。
window.addEventListener('DOMContentLoaded', () => {const replaceText = (selector, text) => {const element = document.getElementById(selector)if (element) element.innerText = text}for (const dependency of ['chrome', 'node', 'electron']) {replaceText(`${dependency}-version`, process.versions[dependency])}
})
4)package.json
為了確保能夠運(yùn)行相關(guān)electron的命令,需要修改package.json
文件。
首先需要去設(shè)置main
屬性,electron默認(rèn)會去在開始時尋找項(xiàng)目根目錄下的index.js
文件,此處我們使用的是main.js
,所以需要去定義下。
// package.json{"name": "kuari","version": "0.0.0","main": "main.js", // 新增"scripts": {"dev": "vite","build": "vite build","serve": "vite preview"},"dependencies": {"vue": "^3.2.16"},"devDependencies": {"@vitejs/plugin-vue": "^1.9.3","electron": "^15.1.2","vite": "^2.6.4"}
}
最后我們需要新增electron的運(yùn)行命令。
// package.json{"name": "kuari","version": "0.0.0","main": "main.js","scripts": {"dev": "vite","build": "vite build","serve": "vite preview","electron:serve": "electron ." // 新增},"dependencies": {"vue": "^3.2.16"},"devDependencies": {"@vitejs/plugin-vue": "^1.9.3","electron": "^15.1.2","vite": "^2.6.4"}
}
四. 運(yùn)行
直接在終端輸入如下命令:
yarn electron:serve
接著我們就可以看到我們桌面應(yīng)用就出來咯!
五. 最后
之前做項(xiàng)目一直用的Vue CLI Plugin Electron Builder,這次有個項(xiàng)目先用electron開發(fā)一下,推一波看看,后期看情況swift重新開發(fā)一個mac的桌面應(yīng)用。也剛好嘗嘗鮮,一直沒有機(jī)會試試vite。
electron這個東東確實(shí)很方便,就是打包出來的應(yīng)用體積太大,真的是硬傷啊。這次目標(biāo)人群首先是windows用戶,所以上electron吧!