有一个内部工具需要从浏览器搬到桌面——要能常驻、要能直连本地资源。选了 Electron + Vite 这套最常见也最稳的组合。
为什么是 Vite
Vite 的 HMR 在开发期太香了,渲染层代码改完立刻生效,不用等打包。Electron 主进程改了才需要重启,分工明确。
环境变量那条线
桌面端连的后端地址和 Web 端不一样,我们用 .env 里的 VITE_DESKTOP_API_BASE_URL 区分:
# .env
VITE_DESKTOP_API_BASE_URL=http://localhost:4000
关键点是:带 VITE_ 前缀的才会被暴露到前端。不带前缀的变量只在构建/主进程侧可见,别搞混,否则你会纳闷"明明配了为什么读不到"。
两个坑
- 主进程和渲染进程是两套环境,
process.env在两边不一定一致,跨进程传配置要走 IPC; - 打包后路径用
app.getAppPath()之类动态拿,别写死./。
一句话
Electron 不是把网页套个框,是把"网页能干什么"的边界往前推了一截。
用得好,它是最省事的桌面方案;用不好,就是带着一个Chromium到处跑的体重。