Vue3+Vite+Electron实现开发桌面应用

前文:Vue 生态演进指南:主流框架搭配以及Vue CLI vs Vite 与 Vue2 vs Vue3 核心区别

一、含义

  • 用 Vite 作为前端工程化工具,搭建 Vue 3(或 React / 原生 JS)的前端项目,负责代码的编译、热更新、打包;
  • 用 Electron 作为桌面容器,把 Vite 构建的前端页面 "嵌入" 到 Electron 窗口中,同时借助 Electron提供的 Node.js 能力和系统 API,实现桌面应用的功能(比如窗口管理、本地文件操作、菜单定制等)。

简单说:

  • 纯 Vite + Vue 3 开发的项目,运行后是在浏览器里打开的(本质是网页应用);
  • 加上 Electron 之后,运行的是独立桌面窗口,不是在浏览器里 ------ 但这个窗口里渲染的内容,还是你用 Vite 构建的前端页面。

打个比方更清楚:

  • 纯 Vite 项目 → 你写的内容,只能在 "浏览器这个大房子" 里展示;
  • Vite + Electron → Electron 给你造了一个 "专属小房间",把你写的前端内容放进去,这个小房间是独立的桌面程序,不用依赖浏览器也能运行。

而且 Electron 窗口还能做很多浏览器里做不了的事,比如直接读写本地文件、控制窗口大小 / 位置、创建系统托盘图标等。

二、工具

  1. Vite(构建工具)

    已经了解 Vite 是 Vue 3 推荐的构建工具,它的核心优势是:

    基于浏览器原生的 ESModule,开发环境下无需打包,启动和热更新速度极快;

    生产环境基于 Rollup 打包,输出更高效的代码;

    对 Vue 3、React 等现代框架有原生优化。

  2. Electron(桌面应用框架)

    Electron 是一个能让你用 HTML、CSS、JavaScript(前端技术栈) 开发跨平台桌面应用(Windows/Mac/Linux)的框架,核心原理是:

    内置 Chromium 浏览器内核(渲染界面) + Node.js 环境(访问系统 API);

    前端写的页面可以直接跑在桌面端,还能调用系统级能力(比如文件读写、窗口控制、系统托盘等)。

三、示例

(1) 前置条件

安装 Node.js(建议 16+);

初始化一个 Vite + Vue 3 项目:

bash 复制代码
# 创建 Vite + Vue 项目
npm create vite@latest my-electron-app -- --template vue
cd my-electron-app
npm install
# 安装 Electron 依赖
npm install electron --save-dev

(2)核心配置(简化版)

  • 新建 electron/main.js(Electron 主进程文件):
bash 复制代码
const { app, BrowserWindow } = require('electron')
const path = require('path')

// 创建窗口函数
function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      // 允许渲染进程使用 Node.js 能力(开发环境可选)
      nodeIntegration: true,
      contextIsolation: false
    }
  })

  // 加载页面:开发环境加载 Vite 本地服务,生产环境加载打包后的静态文件
  if (process.env.NODE_ENV === 'development') {
    win.loadURL('http://127.0.0.1:5173/') // Vite 默认开发端口
    win.webContents.openDevTools() // 打开开发者工具
  } else {
    win.loadFile(path.join(__dirname, '../dist/index.html')) // 生产环境加载打包后的文件
  }
}

// Electron 应用就绪后创建窗口
app.whenReady().then(() => {
  createWindow()
  // Mac 系统下关闭窗口后保留应用
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

// 关闭所有窗口后退出应用(除 Mac 外)
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit()
})
  • 修改 package.json(添加脚本和配置):
bash 复制代码
{
  "name": "my-electron-app",
  "version": "0.0.0",
  "main": "electron/main.js", // 指定 Electron 主进程入口
  "scripts": {
    "dev": "vite", // 启动 Vite 开发服务
    "electron:dev": "cross-env NODE_ENV=development electron .", // 启动 Electron(需安装 cross-env:npm i cross-env -D)
    "build": "vite build", // 打包前端代码
    "electron:build": "npm run build && electron-builder" // 打包桌面应用(需安装 electron-builder:npm i electron-builder -D)
  }
}

(3)运行效果

  • 先启动 Vite 开发服务:npm run dev;
  • 新开终端启动 Electron:npm run electron:dev;
  • 此时会弹出一个桌面窗口,里面显示的是你用 Vue 3 写的前端页面,和浏览器中访问 http://127.0.0.1:5173 的效果一致,但这是一个独立的桌面应用。

四、总结

  • vite+electron 是前端构建工具 + 桌面应用框架的组合,用 Vite 高效开发前端页面,用 Electron 把页面变成跨平台桌面应用;
  • 相比传统的 webpack+electron,vite+electron 开发体验更好(启动 / 热更新更快),尤其适配 Vue 3 等现代框架;
  • 核心逻辑是:Vite 负责前端代码的构建,Electron 负责把前端页面封装成桌面窗口,并提供系统级 API 能力。
相关推荐
困死,根本不会1 小时前
Electron 开发环境搭建超详细学习笔记
笔记·学习·electron
●VON3 小时前
【鸿蒙PC】在 HarmonyOS 上跑 Electron?手把手教你搞定桌面欢迎页!(Mac版)
开发语言·macos·华为·electron·电脑·harmonyos
小圣贤君14 小时前
从「选中一段」到「整章润色」:编辑器里的 AI 润色是怎么做出来的
人工智能·electron·编辑器·vue3·ai写作·deepseek·写小说
ZengLiangYi21 小时前
PPT Timer:一个置顶于PPT全屏放映之上的LCD倒计时器
electron
一拳不是超人10 天前
Electron主窗口弹框被WebContentView遮挡?独立WebContentView弹框方案详解!
前端·javascript·electron
柯南952714 天前
Electron 无边框窗口拖拽实现
vue.js·electron
卸任14 天前
Windows判断是笔记本还是台式
前端·react.js·electron
一拳不是超人14 天前
Electron 实战全解析:基于 WebContentView 的多视图管理系统
前端·javascript·electron
lpfasd12318 天前
Tauri vs Electron:高质量Word/PDF导出效果深度对比
electron·pdf·word
卸任19 天前
Electron判断是内置摄像头还是接摄像头
前端·react.js·electron