Skip to content

聊聊插件化系统设计

定义

插件化架构,指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现。这种架构一般由2个成分组成:

  1. 内核:通常只包含系统运行的最小功能
  2. 插件:通常是独立的模块,提供单一的功能

内核除了管理插件之外,还会将要完成的所有业务进行抽象,抽象出最小粒度的基础接口,供插件方来调用。比方说,浏览器就是一个典型的插件化架构,浏览器是内核,页面是插件,这样通过不同的URL地址加载不同的页面,来提供非常丰富的功能。我们开发网页的时候,浏览器会提供很多API和能力,这些接口通过 window来挂载, 比如,DOM、BOM、Event、Location等等。

插件三要素

设计一个完善的插件化架构的系统,包含三要素:

  • plugCore:插件运行时,管理插件的加载、运行、卸载等生命周期(类比浏览器);
  • pluginAPI:插件运行时提供给插件开发需要用到的接口(类比浏览器例子,相当于window api);
  • plugin:插件,相互独立的模块,提供了单一的功能(类比浏览器例子,相当于不同的网页)。

怎么把系统拆解为插件三要素?

第一步:定义出你需要插件化来帮助你解决的问题是什么?

第二步:实现内核

  • 开发基础服务
  • 开发基础组件
  • 开发插件调度机制

参考

[1] 插件式开发架构综述 - 墨天轮

[2] 插件式可扩展架构设计心得

[3] 最经典的两种软件架构模式

[4] 一文搞懂插件架构设计原则

[5] 从开发chrome插件到插件系统设计

[6] 前端架构利器-依赖注入

[7] 如何设计开发一个 Web 插件系统?-CSDN博客

[8] 前端插件化架构的思考-腾讯云开发者社区-腾讯云

[9] 前端进阶:跟着开源项目学习插件化架构

[10] 前端插件化架构的探索和实践