Electron 桌面端工程师 · 成都 · 6 年经验
yeqining@example.com · 136 0000 0000 · github.com/yeqining
个人优势
- 6 年前端经验,其中 4 年开发 Windows 与 macOS 桌面产品,熟悉主进程、渲染进程与系统能力的安全边界
- 负责过自动更新、离线数据、文件导入、托盘和系统通知等完整交付链路,能排查只在某个系统版本出现的问题
- 安全上收紧过 IPC:参数 schema 校验、速率限制、contextIsolation 和最小权限的 preload 暴露
- 本地数据用 SQLite,事务写入并定期 checkpoint,意外断电后能从最近一次成功提交恢复
- 本地搜索做过增量索引和过期查询取消,十万级文档块首屏结果通常在 200ms 内返回
- 熟悉跨平台构建、签名和公证,CI 为每个平台验证安装和启动后再发布
- 灰度按企业 ID 稳定分桶,崩溃率异常时自动停止扩量,保留上一版安装包和数据迁移回滚脚本
- 关注安装成功率、启动时长和崩溃率三项指标,冷启动时间做过专项优化
- 处理过大量平台差异:Windows 路径大小写和文件占用、macOS 权限与沙箱、高 DPI 缩放
- 和测试、客户支持一起建立诊断包导出流程,默认不含正文,跨平台问题复现效率明显提高
- 技术栈:Electron、Node.js、React、TypeScript、Zustand、SQLite、自动更新与代码签名
工作经历
某知识管理公司 · 桌面端工程师
产品是面向企业的知识库客户端,用户在本地编辑文档并同步到团队空间;桌面组 6 人,我负责离线编辑、搜索和发布链路。
- 离线同步:旧版断网编辑后容易在重连时覆盖同事的新版本。把本地变更写入持久化队列,服务端返回版本冲突时给出段落级差异与人工选择;同步失败率从约 4% 降到不足 0.5%,客服不再需要手工恢复大多数冲突文档
- 启动性能:用 CPU Profile 找到首屏启动时同时加载全文索引、插件和同步任务。先显示最近文档,索引增量加载,插件在首次调用时初始化;普通办公电脑冷启动可交互时间从 7 秒多降到约 2.5 秒
- 自动更新:用户处于企业内网,更新包下载常中断。支持断点续传和签名校验,下载完成后在空闲时提示重启;按企业批次灰度,失败时保留可回滚版本,升级成功率保持在 98% 以上
- 安全边界:将渲染进程的 Node 集成关闭,文件、剪贴板和系统通知只通过白名单 preload API 暴露;对导入的 HTML 做清理,修复了一处文档预览可执行脚本的漏洞
- 排障能力:崩溃报告附应用版本、系统版本、最近操作和匿名 traceId,去掉文档正文与本地路径;客户支持能在控制台查到故障上下文,复杂问题平均定位周期由数天缩到一天内
某设计软件公司 · 前端工程师
参与设计素材管理工具,用户主要在 Windows 笔记本上批量整理图片和字体文件。
- 开发文件夹监听与增量索引,避免每次打开项目全盘扫描;1 万个文件的索引更新时间从数分钟缩到十几秒
- 将缩略图生成放到独立进程,限制并发并缓存结果;大批量导入时界面不再因解码图片卡死
- 处理 Windows 路径大小写、文件占用和 macOS 权限差异,给用户明确的失败原因及重试入口
项目经历
企业知识库桌面客户端
Electron / React / TypeScript / SQLite / Node.js
产品需要支持本地离线编辑、全文搜索和团队同步。客户对文档隐私有严格要求,不允许问题日志带正文。
- 主进程负责文件与更新,渲染进程负责界面;IPC 参数做 schema 校验和速率限制,避免插件或异常页面调用任意本地 API
- SQLite 存文档索引与待同步变更,写入使用事务并定期 checkpoint;意外断电后能从最近成功提交的位置恢复
- 搜索索引按文档块增量更新,输入时取消过期查询;十万级文档块的本地搜索首屏结果通常在 200ms 内返回
- 配套设计“本地未同步”“正在重试”“冲突待处理”三个显式状态,避免用户误以为编辑已上云
跨平台安装与灰度发布
Electron Builder / GitHub Actions / 私有更新服务
产品需支持 Windows x64、macOS Intel 与 Apple Silicon,企业内网用户还需要离线安装包。
- CI 为不同平台分别构建、签名、验证安装和启动,再发布到私有更新服务;发布清单记录包哈希与兼容系统版本
- 灰度按企业 ID 稳定分桶,更新失败或崩溃率异常时停止扩量;保留上一版安装包和数据迁移回滚脚本
- 为客户支持准备诊断包导出工具,默认不含文档正文,用户确认后才包含更详细的匿名日志;跨平台问题的复现效率明显提高
桌面端冷启动优化
Electron / V8 Snapshot / esbuild
客户端冷启动在老旧 Windows 笔记本上要 8 秒以上,是用户反馈最多的问题。
- 用启动追踪拆分耗时:主进程同步加载了全部模块、首屏渲染前等待了非必要的数据同步
- 主进程模块改为按需加载并用 esbuild 打包成单文件,减少磁盘读取;首屏只依赖本地缓存数据,同步放到窗口显示之后
- 窗口先显示骨架再填充内容,避免长时间白窗
- 老旧笔记本上冷启动从 8 秒多降到 3 秒左右,启动慢相关的反馈减少约七成