低代码如何实现插件化架构?

大家好,本文介绍了实现插件化的低代码架构的思路,以及在Meta3D(开源Web3D低代码平台)中具体实现的方案

需求

有同学想做个编辑器,希望可以随意替换引擎、编辑器UI,能以插件的形式进行扩展,问该如何实现?

下面,我们首先给出抽象的解决方案:

抽象的解决方案

如上图所示,编辑器由多个积木组成,其中有引擎积木、UI积木等。各个积木之间互相独立,只依赖于彼此的抽象的积木协议。

只要让编辑器组合不同的积木,就能实现替换积木,并且不影响其它的积木。

想要扩展功能,则增加对应的积木,并让编辑器组合它即可。

这里只是给了个大概的思路,具体要使用"积木模式",详见:开源书《3D编程模式》->积木模式

接着,我们来看下在Meta3D中是如何实现插件化的:

具体的解决方案

如上图所示,在Meta3D中,编辑器由多个包组成,其中有引擎包、UI包等。包又由多个扩展组成,而扩展又可以通过组合不同的贡献来扩展自身。

包、扩展、贡献都属于积木,只是层级不同。因为同层的积木之间互相独立,只依赖于彼此的抽象的积木协议,所以可以替换

因此,如果要替换引擎,则只需要增加对应的引擎包,让编辑器组合它即可。具体来说,步骤如下:

  • 开发出对应的贡献和扩展,发布到Meta3D平台
  • 在Meta3D平台上,将它们组合为引擎包
  • 在Meta3D平台上,让编辑器改为组合这个新的引擎包,以替代原有的引擎包
  • 在Meta3D平台上,运行编辑器,即可看到已经替换了引擎

更多

更多的编辑器和引擎的编程模式,请详见:开源书《3D编程模式》

Meta3D(开源Web3D低代码平台)目前发布了v1.0正式版,快速搭建Web3D编辑器,共建开放互助的Web3D生态。详见:
Meta3D 1.0正式版发布-----开源的Web3D低代码平台