用vue3+ts+elementPlus+vite搭建electron桌面端应用

1.创建项目并安装基础依赖

最快捷的方式是使用 @quick-start/electron官方脚手架,它能直接生成配置好的项目结构:

bash 复制代码
# 使用脚手架创建项目
pnpm create @quick-start/electron electron_template --template vue-ts

创建过程中,命令行会交互式地询问一些配置,例如是否添加自动更新插件、启用下载镜像代理 等,根据你的需求选择 YesNo即可。

完成后,进入项目目录并安装依赖:

bash 复制代码
cd electron_template
pnpm install

2.项目结构与核心配置

通过脚手架创建的项目具有清晰的结构,特别适合 Electron 开发:

javascript 复制代码
electron_template/
├── src/
│   ├── main/           # Electron 主进程代码
│   ├── preload/        # 预加载脚本
│   └── renderer/       # 渲染进程,这里就是你的 Vue 应用
│       └── src/
│           ├── assets/
│           ├── components/
│           ├── App.vue
│           └── main.ts
├── electron.vite.config.ts  # 项目配置文件
└── package.json

3.安装ui组件库与插件

在项目根目录下,安装 Element Plus 以及支持自动导入的插件:

bash 复制代码
pnpm add element-plus
pnpm add -D unplugin-vue-components unplugin-auto-import @types/node

4.配置Electron和Vite

修改 electron.vite.config.ts文件,集成 Vue、Element Plus 自动导入和 Electron:

TypeScript 复制代码
// electron.vite.config.ts
import { resolve } from 'path'
import { defineConfig } from 'electron-vite'
import vue from '@vitejs/plugin-vue'
// 引入自动导入插件
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  main: {}, // 主进程配置
  preload: {}, // 预加载脚本配置
  renderer: {
    // 解析渲染进程中的别名
    resolve: {
      alias: {
        '@renderer': resolve('src/renderer/src')
      }
    },
    plugins: [
      vue(),
      // 配置自动导入
      AutoImport({
        resolvers: [ElementPlusResolver()],
        dts: true // 生成类型声明文件
      }),
      Components({
        resolvers: [ElementPlusResolver()],
        dts: true // 生成类型声明文件
      })
    ]
  }
})

5.在 Vue 中引入 Element Plus 并使用

在src/renderer/src/main.ts中引入 Element Plus 的样式:

TypeScript 复制代码
import './assets/main.css'

import { createApp } from 'vue'
import App from './App.vue'
import 'element-plus/dist/index.css'

createApp(App).mount('#app')

src/renderer/src/App.vue中直接使用 Element Plus 组件,无需手动导入,这得益于自动导入插件的配置:

html 复制代码
<script setup lang="ts">
import { ElMessage } from 'element-plus'
import Versions from './components/Versions.vue'

const ipcHandle = (): void => window.electron.ipcRenderer.send('ping')

const handleClick = (): void => {
  ElMessage.success('点击了element按钮')
}
</script>

<template>
  <img alt="logo" class="logo" src="./assets/electron.svg" />
  <div class="creator">Powered by electron-vite</div>
  <div class="text">
    Build an Electron app with
    <span class="vue">Vue</span>
    and
    <span class="ts">TypeScript</span>
  </div>
  <p class="tip">Please try pressing <code>F12</code> to open the devTool</p>
  <div class="actions">
    <div class="action">
      <a href="https://electron-vite.org/" target="_blank" rel="noreferrer">Documentation</a>
    </div>
    <div class="action">
      <a target="_blank" rel="noreferrer" @click="ipcHandle">Send IPC</a>
    </div>
    <!-- 使用ElementPlus按钮 -->
    <el-button type="primary" @click="handleClick">这是一个ElementPlus按钮</el-button>
  </div>
  <Versions />
</template>

6.配置 package.json 脚本

确保 package.json中的脚本和入口点配置正确。electron-vite脚手架已预设好这些。

TypeScript 复制代码
{
  "name": "electron_demo", // 项目名称
  "version": "1.0.0", // 版本号
  "description": "An Electron application with Vue and TypeScript", // 描述
  "main": "./out/main/index.js", // 指向编译后的主进程文件
  "author": "example.com", // 作者
  "scripts": {
    "dev": "electron-vite dev", // 启动开发环境
    "build": "npm run typecheck && electron-vite build", // 构建项目
    "build:unpack": "npm run build && electron-builder --dir", // 构建 unpack 目录
    "build:win": "npm run build && electron-builder --win", // 构建Windows安装包
    "build:mac": "npm run build && electron-builder --mac", // 构建macOS安装包
    "build:linux": "npm run build && electron-builder --linux" // 构建Linux安装包
    // ...
  },
  // ...
}

7.开发与构建

在项目根目录运行。这会启动 Vite 开发服务器和 Electron 应用窗口,并支持热更新:

bash 复制代码
pnpm dev

运行 pnpm build:win(或针对其他平台的相应命令)来打包生成可分发的安装文件:

bash 复制代码
pnpm build:win

点击安装即可。

注意

  • 打包配置文件在这里:

  • 仅在 mac、linux上支持构建 mac、linux 详情
  • 若使用 vue-router,在打包后避免白屏问题,推荐使用 hash 模式
  • 若安装 Electron 二进制文件缓慢,可设置镜像源加速
bash 复制代码
pnpm config set electron_mirror https://npmmirror.com/mirrors/electron/
  • Vue 组件(渲染进程)与 Electron 主进程 通信需通过预加载脚本安全地进行,使用 ipcMain 和 ipcRenderer 进行通信。(下次有空做个示例)
相关推荐
0思必得05 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5165 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino5 小时前
图片、文件的预览
前端·javascript
layman05287 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔7 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李7 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN7 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒7 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局
PHP武器库8 小时前
ULUI:不止于按钮和菜单,一个专注于“业务组件”的纯 CSS 框架
前端·css
电商API_180079052478 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫