彻底搞懂微前端。
这次的主题是微前端,带大家吃透微前端。学一个东西的时候,不应该仅仅去学它的实战,它是怎么用的?这样你的知识体系不够完整,好比微前端要学它的背景,为什么会产生微前端?它解决了什么问题以及它的实现原理,包括现在业界流行的技术方案,以及到最后才是某一个方案的,具体的项目实战和落地。
在讲微前端之前我们要先了解微服务,通常来对比之前很早的这种单体的架构,单体来说它有几大特性。一个是所有的功能都融合在一块,相互影响,哪怕我改一行代码,整个项整个软件都要重新构建部署,上线成本是非常高的。而且就是说我改动其中一个点,可能对对子测试同学来说,整个功能都要回归一遍。
随着软件服务的发展,后来单体又到了面向服务,就是通常说的soa。再往后就慢慢的形成了微服务,它有几大特性。
·一个是敏捷性,可以快速迭代自己的微服务,弹性部署就可以快速的继承与部署;服务独立性增加了应用程序对故障的弹性;技术自由。就说你的这个服务可以选择a技术,这个服务可以选择b技术,可以重复利用代码。
·接着再往下看就到了微前端,可以看一下这张图,最早是出现了微服务,它可以拆分成n个小的子服务,统一去访问共享的数据库前端应用,组件VS微前端只有一个,它都融合在一起,所以说它分别调用abcd四个服务,慢慢的在发展,进行拆分就拆分成这样。组件VS微前和类似于后端的微服务的这种形式,也要拆分成一个一个的子应用。
这样就是由于一整个按照一定的规则拆分成各种前端的小应用。这种方案方式,你可以理解为就是微前端,可以再从另外一个角度去看。因为现在都是组件化开发,可以类比将微前端看成组件,只不过组件有点大功能比较齐全。
从应用场景来看组件是不可运行的,它是被调用的,整个应用中的一小部分。微前端可以单独运行应用,从技术上来说组件是基于某个相架实现的,而微前端应用不依赖于相架,整个微前端肯定有一些优点。每个微前端都可以选择自己的技术赛和技术进化路线,因为每一个应用都是独立不相互影响的。
还有一些其他问题,如:采用第再一个是环境隔离,就每一个项目不共享运行环境,比如说D应用挂了不会影响,C应用也是有独立性高可用。
缺点就是会增加运维的成本。因为原本是由一个分成了多个,拆分力度越小架构复杂,维护成本越高。微前端支持不同的进入栈发生,可能整个微前端的项目可能技术栈会造成不同。怎么应用这点非常重要,面试当中也会参考。为什么你的项目要拆成微前端?这种方式肯定有几个原则。
所以要聊聊这个原则。第一:要搞清楚项目如何拆分成微前端项目。第二:选型。应该用哪种微前端技术去落地?最后应该怎么样去考虑?如果是新项目直接采用微前端,我在这里是直接推荐没挨过和微前端的技术可以降低项目的管理成本。拆分原则可以从这几方面去考虑。
·第一:是否有快速迭代的需求。如果有快速迭代需求,持技索原期,单体菜则表示业务需要快速响应,不仅支持快速迭代,还支持业务快速试错。比如说小功能,如果影响到大版本的功能,这时候可以采用独立发布部署。拆分原则就是这个地方说的这几大原则拆分的方法。
其实就是说白了就是技术选型,就是包括按你的团队有可能你的服务。不同的服务是不同的团队的,团队有可能技术栈是不一样的。目前前端界流行的微前端的技术选型有这么几个。
在这里推荐大家使用的是你们的 rap app,他的改造成本是比较低的,学习成本也比较低。不管是你的老项目的基础还有此项目的侵入也是比较低的。所以如果大家想做选项,可以选择这个mate robo app。他提供了的砂箱样式的隔离、元素的隔离、御家宅资源等等。他其实是一个完善的,包括你怎么样和手应用、怎么样和基座通讯?基座怎么样调用子应用里面的方法,都提供了完整的demo。
这一课就讲理论,把理论、历史背景发展搞清楚了,然后再去看实战。这时候你的知识点解码,你能够从pro到玩串起来,也就是逐渐形成微前端技术的知识体系。
如果大家有什么问题可以评论区留言。