Mini-Electron
Mini-Electron 是 Miniblink 提供的一个特殊模式,它实现了 Electron 的大部分功能,但体积更小、性能更好。Electron 是目前最流行的跨平台 PC 开发框架,它将 Node.js 和 Chromium 结合起来,让开发者可以同时使用两者的功能。
实现原理
核心思想
由于 Miniblink 本身就包含了 Chromium 的 Blink 和 V8,我们只需要:
- 添加 Node.js 功能
- 补充 Electron 的桥接代码 就能实现一个超级精简版的 Electron。
技术实现
Mini-Electron 由两个主要部分组成:
-
mini-electron.exe
- 体积仅几百 KB(原版约 50-60MB)
- 负责调用 nodejs.dll 导出的接口
- 模拟 Electron 的功能
- 重写了大量依赖 Chromium 基础库的代码
-
nodejs.dll
- 集成了 Miniblink 和 Node.js 的代码
- 共用 V8 部分
- 体积仅增加几 MB
架构差异
原版 Electron
- 多进程架构
- 主进程:运行 Node.js 环境
- 渲染进程:每个窗口一个 Node.js 环境
- 主进程同时作为 Chromium 的主进程
Mini-Electron
- 单进程多线程架构
- 主线程:运行 Node.js 环境
- 渲染线程:运行 Miniblink 的 WebView
- 通过异步调用 WKE 接口实现 Web 能力
技术限制
DLL 加载限制
由于 Windows 的 DLL 加载机制,Mini-Electron 存在以下限制:
- 不能同时加载多个相同的原生 DLL(.node 文件)
- 影响同时需要主进程和渲染进程加载原生 DLL 的应用
解决方案
可以通过以下方式解决:
- 使用 Electron 的 remote 功能
- 通过
remote.require
在主进程加载 DLL - 远程使用 DLL 接口
优势对比
Electron 的劣势
- 安装包体积难以优化
- 内存开销大(需要完整 Chromium 库)
- 多个实例无法共享主进程资源
- 无法进行关联性优化
Mini-Electron 的优势
- 极小的安装包体积
- 更低的内存占用
- 支持资源共享
- 可以进行关联性优化
当前限制
- 部分模块尚未支持(主要是 session 相关功能)
- 单进程架构限制了同名 DLL 的多次加载
注意:相比 PWA 进军桌面市场的方案,Mini-Electron 在性能和资源占用方面具有明显优势。