- List item
本文主要针对移动端基础平台架构做详细分析与详解,并教大家一步一步实战来实现一个大作坊的基础架构平台:github.com
写本文的目的:由于本人在移动端滚爬摸打已有数年之久,经历了大团队几十人开发到一个人独立开发的过程,从最原始的原生态开发方式到具有热更新的云端部署方式,在到现有的组件化灵活配置的方式,这些都无非是针对业务简化开发逻辑,提升开发效率的目的罢了,不然我们也不会那么闹心的去研究哪些所谓高大尚的(阿里,阿里,阿里粑粑)大哥大姐兄弟姐们们的屠龙输出,在这里开了个小玩笑,进入正题.
我们先来看一张基于插件化+组件化的平台基础架构简图:
上面是一个简图,实际基于平台实现的详细架构图远比这复杂得多,上面的核心有三个模块:host,ZdRouter,event三个模块,那这三个模块为什么为核心所在呢,下面我们就来一一分析:
1.host: 这个模块主要是针对插件化来描述的,也就是我们常说基于插件化开发需要有一个壳的载体,在这个架构中这个壳它只干一件事就是去加载我们需要的apk文件,其实一个apk文件也就是dex文件,也就是去加载这个apk的dex文件,让我们把需要加载的apk能通过这个方式实现动态化加载与更新,提升我们的业务的灵活度,达到具有云端部署的能力,当然一个好的完美的插件化实现要做的远不止这么多
2.ZdRouter:这个模块就是组件化实现的核心所在,通过它可以实现组件化之间跳转与基础通信,当然涉及到本身隔离状态的组件间去实现通信时是需要注意的,因为在组件间没有建立链接关系时是不能进行通信的,所以在这里只有通过组件间建立实际关系过后,通过这中关系我们才能达到通信的可能,当然建立关系时我们看下组件化基础架构简图:
上图为组件化核心架构基础,每个模块就是一个组件,每个组件可以认为就是一个业务,它可以实现独立开发运行,当然在最终需要通过主app进行集成,也就是说当你所有的组件业务都开发测试完成后就可以通过主app进行集成测试发布了,它最大的优点就是实现业务解耦,开发测试并行,提升组件复用,最终提升产品开发效率
3.event:这个模块主要实现事件分发,在组件化开发时,我们通常会遇到组件间能否更好的实现通信效果,如a模块针对b模块的事件关注的实现,b莫阿快针对a模块实现反向关注的实现,还有在通过一个事件分发是否可以针对多个关注来进行监听达到多个对象同时获取事件更新后处理的过程,在以下实战项目中,我们都完美的解决了以上相关的问题
接下来我们来实现基于以上初步架构图的生态进行实战:基础项目:传送带
首先我们整个项目结构如下:
-
List item
看目录很多,看核心的地方即可,实际基础平台远不止这些,在这里我只是列出了初步,并上传到github.com,报着一个初心来开源这个项目,当然这个项目目前只完成了一些基础核心实现,并会持续完善下去,当然如果你对这个开源项目感兴趣的化可以进行关注或者去start一把(看你start的样子真可爱,开个玩笑),开提就已经把项目传送带放了上来,毕竟还是希望多点人进来参与,让项目走得更快一些,在下来我们看ZdRouter目录结构,这是我已经看到了惊讶的表情:
哇塞,怎么可能会这么简单,其实就是这么简单,目的达到即可,当然还是有很多需要完善的地方,目前只是基础demo,当然那么简单了,实际线上项目肯定不止这些,呵呵,不要着急,凡事都得有个过程,一步一个脚印才能构脚踏实地嘛,当然类的化我就不截图了,去看项目吧,目前的代码简直简单的不要不要的了,你别跟我说看不懂哦,记得在如标题时进入,在下来我们看以下event:
什么鬼操作,就几个类而已,哈哈,类不再多而在于它完成的事有没有达到我们的目的了,哈哈,赶快去看看吧,你一定会喜欢的,好了关于移动端基础平台架构就介绍到这里,实战嘛,去看项目吧,能参与进来最好,这是一个长期持久的过程,也可能顺便把你在公司的项目问题顺道解决了,这个不乐哉,在啰嗦一句,做技术的时间长了往往会不善于表达,内心却又无限想涌出的感觉,但是好的机会却往往最终由你表达的效果来决定,不管怎样,不忘初心,做一个真实的自己就好