MiniBlink

Mini-Electron

Mini-Electron 是 Miniblink 提供的一个特殊模式,它实现了 Electron 的大部分功能,但体积更小、性能更好。Electron 是目前最流行的跨平台 PC 开发框架,它将 Node.js 和 Chromium 结合起来,让开发者可以同时使用两者的功能。

实现原理

核心思想

由于 Miniblink 本身就包含了 Chromium 的 Blink 和 V8,我们只需要:

  1. 添加 Node.js 功能
  2. 补充 Electron 的桥接代码 就能实现一个超级精简版的 Electron。

技术实现

Mini-Electron 由两个主要部分组成:

  1. mini-electron.exe

    • 体积仅几百 KB(原版约 50-60MB)
    • 负责调用 nodejs.dll 导出的接口
    • 模拟 Electron 的功能
    • 重写了大量依赖 Chromium 基础库的代码
  2. 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 的劣势

  1. 安装包体积难以优化
  2. 内存开销大(需要完整 Chromium 库)
  3. 多个实例无法共享主进程资源
  4. 无法进行关联性优化

Mini-Electron 的优势

  1. 极小的安装包体积
  2. 更低的内存占用
  3. 支持资源共享
  4. 可以进行关联性优化

当前限制

  1. 部分模块尚未支持(主要是 session 相关功能)
  2. 单进程架构限制了同名 DLL 的多次加载

注意:相比 PWA 进军桌面市场的方案,Mini-Electron 在性能和资源占用方面具有明显优势。