Electron Vue3 项目模版: Electron Admin Template
·
Electron Admin Template
一个基于 Electron + Vue 3 + TypeScript + Vite 的桌面管理模板,内置 Naive UI、Tailwind CSS、Pinia、Vue Router,并集成 Drizzle ORM + better-sqlite3 的本地数据库。包含登录窗口与主窗口切换、主题切换、动态菜单、状态持久化等常用管理台能力,适合作为 Electron 管理应用的起步工程。
项目地址:https://github.com/fengjun2022/electron-admin-template
技术栈
- Electron 30(多窗口:登录/主窗口)
- Vue 3 + TypeScript + Vite 7
- Vue Router(Hash 模式,适配
file://) - Pinia +
pinia-plugin-persistedstate(状态持久化) - Naive UI(组件库)
- Tailwind CSS v4(
@tailwindcss/postcss) - Drizzle ORM + better-sqlite3(本地 SQLite)
- Iconify / Ionicons 图标
功能概览




- 登录/主窗口分离:
electron/main.ts管理窗口与切换(open-main-window、logout-to-login)。 - 主题与布局:暗/亮主题切换、头部/面包屑显示开关、侧边栏收起,均持久化保存(
src/stores/global-store.ts)。 - 动态菜单:从路由动态生成侧边菜单(
src/config/menu.ts+src/router)。 - 数据持久化:
pinia-plugin-persistedstate示例(stores/modules/counter.ts)。 - 本地数据库:自动建表与默认数据初始化,表结构与仓储封装(
electron/db.ts、electron/schema.ts、electron/repository.ts)。 - 预加载桥接:在
preload暴露window.electronAPI(electron/preload.ts),渲染层通过 IPC 使用数据库能力。
目录结构
electron/:主进程代码main.ts:应用入口/窗口管理/IPC handlerspreload.ts:向渲染进程暴露window.electronAPIdb.ts:初始化 SQLite、自动建表与默认配置schema.ts:Drizzle ORM 表定义repository.ts:数据访问封装(系统设置、模板)
src/:渲染进程(Vue)main.ts:应用挂载,注册 Pinia、Router、第三方插件router/:路由定义(含/login、/home、/tem)layouts/:布局(头部、侧边栏、主内容、聊天侧边)stores/:Pinia 全局与模块化 Storeconfig/:主题与菜单生成views/:示例页面(首页、模板管理、登录)
drizzle.config.ts:Drizzle CLI 配置vite.config.ts:Vite 配置(@指向src)package.json:脚本与打包配置(electron-builder)
快速开始
环境要求
- Node.js 20+
- npm 9+(或使用 pnpm/yarn,自行换用命令)
安装依赖
npm install
如出现 better-sqlite3 版本/ABI 不匹配,可执行:
npm run rebuild
开发调试
- 启动开发模式(同时跑 Vite 与 Electron):
npm run dev
- 按需自动打开 DevTools:
- macOS/Linux:
OPEN_DEVTOOLS=1 npm run dev - Windows (PowerShell):
$env:OPEN_DEVTOOLS=1; npm run dev
- macOS/Linux:
说明:默认不自动打开 DevTools,避免无害的 Autofill 报错噪音(详见下文“DevTools 提示”)。
构建打包
npm run build
- 渲染进程构建产物:
dist/ - 主进程构建产物:
dist-electron/ - 安装包/应用产物:
release/(由 electron-builder 生成) - 默认打包目标:
- macOS:
dmg - Windows:
nsis
- macOS:
如需自定义产品名、AppID、图标和目标平台,请在 package.json 的 build 字段中调整。
运行时行为说明
路由与页面
- 使用 Hash 路由(
createWebHashHistory),兼容file://协议。 - 入口
/#/login为登录窗口;登录成功后通过 IPC 通知主进程打开主窗口。 - 示例子页:
/home(报告生成占位)、/tem(模板管理占位)。
窗口与 IPC
- 预加载脚本在
window.electronAPI暴露方法(electron/preload.ts):openMainWindow():从登录切换到主窗口logoutToLoginWindow():从主窗口退出并回到登录db.insertSystemSetting(templateBaseUrl, reportSave)→Promise<number>db.getSystemSetting()→Promise<{ id; templateBaseUrl; reportSave; status; createdAt } | null>db.updateSystemSetting(id, data)→Promise<void>db.insertTemplate(fileUrl)/db.deleteTemplate(id)/db.listTemplates()
渲染层示例:
// 登录后切换窗口
if ((window as any)?.electronAPI?.openMainWindow) {
(window as any).electronAPI.openMainWindow()
}
// 读取系统设置
const setting = await window.electronAPI.db.getSystemSetting()
提示:
src/types/preload.d.ts中的类型仅为示例,若需完善类型提示,可按实际 API 同步维护。
本地数据库(SQLite)
- 数据文件路径:
app.getPath('userData')/app.db - 首次启动会:
- 自动创建表:
system_setting、report_template、report_result_template - 插入一条启用的
system_setting默认记录,并在userData目录下创建:TemplateBaseUrl/ReportSaveUrl/
- 自动创建表:
- 通过
electron/repository.ts暴露 CRUD 能力,并在main.ts注册 IPC handler。
状态管理与主题
- 全局状态位于
src/stores/global-store.ts,持久化到localStorage:- 主题明暗(自动跟随/手动切换)
- 头部与面包屑显示
- 侧边栏收起状态(可按需开启持久化)
- “小知AI/控制台” 切换示例
常用脚本
npm run dev:启动开发(Vite + Electron)npm run build:类型检查、前端构建、Electron 打包npm run rebuild:重建原生依赖(better-sqlite3)npm run drizzle:generate:基于electron/schema.ts生成迁移npm run drizzle:migrate:执行迁移(可用于非运行时的结构演进)
DevTools 提示(Autofill 报错)
- 含义:开发时打开 DevTools,前端会尝试调用
Autofill.enable/Autofill.setAddresses。当前捆绑的 Chromium 后端未暴露该域,控制台会出现:Request Autofill.enable failed. 'Autofill.enable' wasn't foundRequest Autofill.setAddresses failed. 'Autofill.setAddresses' wasn't found
- 影响:无功能影响,可忽略。
- 处理:默认不自动打开 DevTools;如需调试,可按需打开(见上文“开发调试”)。
- 可选:升级 Electron 版本至与 DevTools 前端匹配的版本;或清理/调整 DevTools 实验特性设置。
疑难排查
- better-sqlite3 报错(ABI/平台不匹配):
npm run rebuild重建原生依赖。- 确保本机构建工具链可用(见“环境要求”)。
- Electron 窗口无页面/白屏:
- 确认
VITE_DEV_SERVER_URL是否设置(开发模式)或dist/index.html是否生成(生产)。 - Hash 路由路径是否正确(
/#/login、/#/home等)。
- 确认
- 预加载类型不匹配:
- 同步维护
src/types/preload.d.ts与electron/preload.ts的实际 API。
- 同步维护
许可
MIT
更多推荐

所有评论(0)