electron 插件系统设计记录


#1

简介

为基于electron构建的应用设计一套插件系统。目前逐步设计阶段,欢迎大佬交流、指正。

分析

现在采用electron构建桌面应用,加上私有模块组件化开发的模式,这种情况下如果一个组件应用于多个项目上,那么更新一个组件后,引用这个组件库的项目就都需要更新它,然后自己构建再发布,用户再去更新,流程应该是这样:

以上流程看出一定的繁琐,桌面端应用确实避免不了反复的构建与更新。如果像vscodeatom的插件系统来管理插件,一个插件更新后插件系统自动更新插件而无关项目本身是否需要更新,这是一个值得尝试的方向:

目前插件系统可以参考UI高度定制的atom实现,但是接入到应用实践依然有一些差异需要尝试:

注入插件方式:

  • [ ] atom: 制定区域注入(left, status-bar, menu…)
  • [x] app: 自由区域制定插件注入

依赖管理:

  • [ ] atom: 开发者客户端,本身有构建环境
  • [x] app: 普通用户环境,重复依赖的处理

形态:

  • [ ] 独立: 多个独立应用共享独立一个插件系统进行版本检查更新
  • [ ] 集中: 多个应用作为模块集中在一个插件系统中

设计

相关文档:

Atom插件化系统是如何实现的?

Atom 背后的故事

What’s the best way to implement a plugin-based application using electron.io?

Visual Studio Code 扩展

VS Code源码简析

Github: https://github.com/yansenlei