構(gòu)建Vue3桌面應(yīng)用程序的方法
在本文中,我們將研究如何通過 Vite 開發(fā) Vue 3 桌面項(xiàng)目。
在項(xiàng)目中會用到 Electron , 一種最流行的框架,可使用Javascript構(gòu)建跨平臺的桌面應(yīng)用程序。 因此,許多受歡迎的應(yīng)用程序都在使用Electron,例如VSCode,Slack,Twitch等。

先看看要做什么:

盡管這只是一個 Vite 的基本模板,但它跑在專用程序而不是瀏覽器中。 這是構(gòu)建自己的桌面應(yīng)用的必要步驟。
以下是開發(fā)過程。
創(chuàng)建的基本 Vite 程序
首先創(chuàng)建 Vite 應(yīng)用。 在這里不會過多介紹 Vite 的工作原理。
在終端下執(zhí)行以下命令:
npm init @vitejs/app cd [project-name] npm install
完成了,先在瀏覽器中試一下。
在終端中簡單的運(yùn)行 npm run dev 命令。然后在瀏覽器中打開本機(jī)地址,可以看到是這樣的:

沒有問題,接著就該把 Electron 添加到它的設(shè)置中了。
在 Vite 項(xiàng)目中添加 Electron
這里按照 Electron 官方的 quick start 在我們的 Vite 應(yīng)用中進(jìn)行一些調(diào)整。
首先安裝 Electron。在終端下輸入以下命令:
Install Electronnpm install --save-dev electron
接著再看一下 Electron 手冊。

手冊上說簡單的 Electron 配置需要四個文件:
- package.json —— 這個已經(jīng)有了
- main.js
- preloader.js
- index.html
看上去項(xiàng)目中已經(jīng)有了 main.js和index.html文件,但它們是 Vite 的文件,而不是 Electron 的文件。 Vite 的文件只能用于運(yùn)行 Vite 程序,所以還需要提供單獨(dú)的 Electron 文件。
main.js 用于創(chuàng)建桌面程序并加載到 index.html 中,它還應(yīng)該包括我們構(gòu)建的 Vite 程序代碼。
構(gòu)建 Vite 程序
所以首先必須構(gòu)建 Vite 程序。 因?yàn)橐阉c Electron 進(jìn)行整合,所以還需要做一些額外的配置。我們要確保在構(gòu)建項(xiàng)目時,對最終 javascript 和 css 文件的所有引用都指向正確的路徑。
要構(gòu)建的 Vite 項(xiàng)目將會創(chuàng)建以下結(jié)構(gòu)的 dist 目錄。

但是由于我們的 Electron 代碼位于項(xiàng)目的根目錄中,所以應(yīng)該將整個項(xiàng)目的基礎(chǔ)設(shè)置為 dist 文件夾。 可以通過 path 庫在 vite.config.js 文件中設(shè)置 base 屬性來實(shí)現(xiàn)。
//vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
const path = require('path')
// https://vitejs.dev/config/
export default defineConfig({
base: path.resolve(__dirname, './dist/'),
plugins: [vue()]
})
現(xiàn)在可以在終端中運(yùn)行 npm run build 來創(chuàng)建 dist 目錄了。
設(shè)置 Electron 的 main.js
下一步是在項(xiàng)目的根目錄中創(chuàng)建 main.js 文件。

創(chuàng)建完畢后我們只需要從 Electron quick start guide 中復(fù)制粘貼代碼就行了。
在我們加載 index.html 的地方,要將其改為 dist/index.html,以便在 dist 目錄中使用該文件。
所以 main.js 中的最終代碼是這樣:
//main.js
const { app, BrowserWindow } = require('electron')
const path = require('path')
function createWindow () {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
win.loadFile('dist/index.html')
}
app.whenReady().then(() => {
createWindow()
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
}
})
})
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
})
創(chuàng)建并編寫 preload.js.
接下來讓在項(xiàng)目根目錄中創(chuàng)建 preload.js 文件,然后再次使用quick start code,這次不必修改任何內(nèi)容。
//preload.js
window.addEventListener('DOMContentLoaded', () => {
const replaceText = (selector, text) => {
const element = document.getElementById(selector)
if (element) element.innerText = text
}
for (const type of ['chrome', 'node', 'electron']) {
replaceText(`${type}-version`, process.versions[type])
}
})
修改 package.json
差不多快要完成了,最后還需要對 package.json文件進(jìn)行一些修改,以便運(yùn)行 Electron 命令。
首先要設(shè)置 main 屬性,在默認(rèn)情況下,Electron 會在根目錄中查找 index.js 文件并執(zhí)行,但是由于我們的文件名為 main.js,所以需要在 package.json 中定義。
//package.json
{
"name": "vite-electron",
"version": "0.0.0",
"main": "main.js", // 這一行
...
}
然后設(shè)置運(yùn)行 Electron 的方式,在 scripts 部分中新創(chuàng)建一個名為electron:start 的腳本,內(nèi)容是electron . 。
//package.json
{
"name": "vite-electron",
"version": "0.0.0",
"main": "main.js",
"scripts": {
"dev": "vite",
"build": "vite build",
"serve": "vite preview",
"electron:start": "electron ." // 這里
},
...
}
以上就是所有的代碼了。
最后在終端中執(zhí)行: npm run electron:start 命令,然后就能看到:

桌面程序終于完成了,很簡單吧~
寫在最后
近期在提升 Vue 的過程中,發(fā)現(xiàn)一個高逼格的 Vue3+TS 教程。 無償分享給掘仔們,戳我看教程
到此這篇關(guān)于構(gòu)建Vue3桌面應(yīng)用程序的方法的文章就介紹到這了,更多相關(guān)Vue3桌面應(yīng)用程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nuxt引入vue-persistedstate以及踩坑記錄
這篇文章主要介紹了Nuxt引入vue-persistedstate以及踩坑記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
vue radio單選框,獲取當(dāng)前項(xiàng)(每一項(xiàng))的value值操作
這篇文章主要介紹了vue radio單選框,獲取當(dāng)前項(xiàng)(每一項(xiàng))的value值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

