最近在学习 Electron 框架,把平时用的网页工具打包成桌面应用。记录一下主进程通信、本地文件读写、以及 ASAR 打包的踩坑过程。
为什么选择 Electron
我的充值助手最初是网页版,但客户需要离线使用,而且要求有桌面图标。Electron 让我可以用 HTML/CSS/JS 开发,打包成 Windows EXE,完美符合需求。
主进程与渲染进程通信
const { ipcMain } = require('electron');
// 主进程监听
ipcMain.on('save-data', (event, data) => {
fs.writeFileSync('data.json', JSON.stringify(data));
event.reply('save-done', 'success');
});
本地文件读写
用 Node.js 的 fs 模块直接读写本地文件,比浏览器 LocalStorage 强大得多。可以操作任意目录,适合数据量大的场景。
ASAR 打包踩坑
打包后发现资源文件路径变了,需要用 __dirname 拼接路径。另外,写入操作要放到用户数据目录,不能写在 ASAR 内部。
总结
Electron 降低了桌面开发门槛,但打包和自动更新需要额外处理。建议用 electron-builder,配置简单,支持自动更新。