大家好,本文介绍了实现插件化的低代码架构的思路,以及在Meta3D(开源Web3D低代码平台)中具体实现的方案
有同学想做个编辑器,希望可以随意替换引擎、编辑器UI,能以插件的形式进行扩展,问该如何实现?
下面,我们首先给出抽象的解决方案:
如上图所示,编辑器由多个积木组成,其中有引擎积木、UI积木等。各个积木之间互相独立,只依赖于彼此的抽象的积木协议。
只要让编辑器组合不同的积木,就能实现替换积木,并且不影响其它的积木。
想要扩展功能,则增加对应的积木,并让编辑器组合它即可。
这里只是给了个大概的思路,具体要使用“积木模式”,详见:开源书《3D编程模式》->积木模式
接着,我们来看下在Meta3D中是如何实现插件化的:
如上图所示,在Meta3D中,编辑器由多个包组成,其中有引擎包、UI包等。包又由多个扩展组成,而扩展又可以通过组合不同的贡献来扩展自身。
包、扩展、贡献都属于积木,只是层级不同。因为同层的积木之间互相独立,只依赖于彼此的抽象的积木协议,所以可以替换
因此,如果要替换引擎,则只需要增加对应的引擎包,让编辑器组合它即可。具体来说,步骤如下:
更多的编辑器和引擎的编程模式,请详见:开源书《3D编程模式》
Meta3D(开源Web3D低代码平台)目前发布了v1.0正式版,快速搭建Web3D编辑器,共建开放互助的Web3D生态。详见:
Meta3D 1.0正式版发布-----开源的Web3D低代码平台