You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将Electron.js与Vue 3、Vite结合实现Electron热重载?

Electron.js + Vue 3 + Vite 结合及热重载实现

当然可以将三者结合,并且完全能实现热重载,不用每次修改代码都重新构建再启动Electron。下面是具体的实现步骤:

1. 安装必要依赖

首先安装Electron和Vite的Electron插件,用它来简化主进程的热重载配置:

npm install electron vite-plugin-electron -D

2. 配置Vite

修改项目根目录下的vite.config.js,添加Electron插件:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import electron from 'vite-plugin-electron'

export default defineConfig({
  plugins: [
    vue(),
    electron({
      entry: 'src/main.js' // 指向你的Electron主进程文件路径
    })
  ]
})

3. 修改主进程加载逻辑

更新你的main.js,根据环境变量切换开发/生产环境的加载方式:

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

function createWindow() {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      // 根据你的需求调整,建议开启contextIsolation增强安全性
      contextIsolation: true,
      nodeIntegration: false
    }
  })

  // 开发环境加载Vite服务器URL,生产环境加载打包后的静态文件
  if (process.env.VITE_DEV_SERVER_URL) {
    mainWindow.loadURL(process.env.VITE_DEV_SERVER_URL)
    // 可选:自动打开开发者工具
    mainWindow.webContents.openDevTools()
  } else {
    mainWindow.loadFile(path.join(__dirname, '/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()
})

4. 配置启动脚本

在package.json中更新scripts,添加开发启动命令:

{
  "scripts": {
    "dev": "vite",
    "build": "vite build && electron-builder",
    "electron:dev": "vite dev"
  }
}

热重载效果说明

  • 渲染进程(Vue代码):Vite会自动处理热重载,修改组件后页面实时更新,无需刷新。
  • 主进程代码:vite-plugin-electron会监听主进程文件的变化,自动重启Electron主进程,不用手动停止再启动。

替代方案(不用插件)

如果不想用vite-plugin-electron,可以用nodemon监听主进程文件,配合Vite开发服务器:

  1. 安装nodemon:npm install nodemon -D
  2. 修改scripts:
{
  "scripts": {
    "vite:dev": "vite",
    "electron:dev": "nodemon --watch src/main.js --exec electron ."
  }
}
  1. 手动在main.js中写死开发服务器URL(比如http://localhost:5173),或者通过环境变量传递。

内容的提问来源于stack exchange,提问作者Rafa0712

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:30:22