微前端技术方案学习

175 阅读2分钟

一、前端架构的前世今生

image.png

初始:无架构,前端代码内嵌到后端应用中

image.png

MVC:

image.png

前后端分离:

  • 将前端代码从后端环境中提炼出来(ajax促进了前端分离架构的发展)多页面架构

image.png

缺点:前端缺乏独立部署能力,整体流程依赖后端环境

NodeJs 的广泛使用促进了前端技术的飞速发展

  • 各种打包、构建工具应运而生。
  • 诞生了多元化前端开发方式,使得前端开发可以脱离整体后端环境

单页面架构

  • 打包:gulp,rollup,webpack,vite......
  • 框架:vue/react/angular/......
  • ui库:antd/iview/elementui/mintui

优势:

  • 切换页面无刷新浏览器,用户体验好
  • 组件化开发方式,极大提升了代码复用率 劣势:
  • 不利于SEO,首次渲染会出现较长时间的白屏(可解决)

大前端时代:

  • 后端框架:express,koa
  • 包管理工具:npm,yarn
  • node版本管理工具:nvm 总结:
  • 过于灵活的实现也导致了前端应用拆分过多,维护困难。
  • 往往一个功能或需求会跨两三个项目进行开发。

微前端新型架构

  • 技术栈无关
  • 主框架不限制接入应用的技术栈,微应用具备完全自主权
  • 独立开发、独立部署 微前端架构-天下大势合久必分分久必合
  • 增量升级
  • 微前端是一种非常好的实施渐进式重构的手段和策略
  • 微应用仓库独立,前后端可独立开发,主框架自动完成同步更新
  • 独立运行时
  • 每个微应用之间状态隔离 运行时状态不共享

微前端劣势:

  • 接入难度高
  • 应用场景-移动端少,管理端多
  1. 在一个系统内微前端是应用间的架构方案
  2. 在多个应用之间,微前端则是一种系统间等架构方案 3.微前端是将多个前端应用以某种形式结合在一起进行应用。

解决的问题:

  • 解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变为一个巨石应用后,随之而来的应用不可维护的问题。

实现的形式:

  • 单实例:即同一时刻,只有一个子应用被展示,子应用具备一个完整的应用生命周期。
  • 多实例:通常基于url的变化来做子应用的切换。 多实例:同一时刻可展示多个子应用。 通常使用Web Components方案来做子应用封装,子应用更像是一个业务组件而不是应用。

二、微前端方案对比

image.png 微前端框架对比:

image.png