微前端简介

微前端

概念详解

什么是微前端?

微前端(Micro-Frontend),是将微服务(Micro-Services)理念应用于前端技术后的 相关实践,使得一个前端项目能够经由多个团队独立开发以及独立部署。

01 微前端开发的特性

  • 技术无关:各个开发团队都可以自行选择技术栈,不受同一项目中其它团队影 技术无关 响;
  • 代码独立:各个交付产物都可以被独立使用,避免和其它交付产物耦合;
  • 样式隔离:各个交付产物中的样式不会污染到其它组件;
  • 原生支持:各个交付产物都可以⾃由使⽤浏览器原⽣ API,⽽⾮要求使⽤封装后的 API;

解决了什么问题?

解决应⽤越来越⼤,维护成本⾼的问题

主要体现在:

  • 代码复杂度不可控,多⼈协作带来困难
  • 模块容易相互影响,⼀个模块出错,往往导致另外模块出错
  • 项⽬扩展性差,不利于横向扩展
  • ⽆法独⽴部署,为什么需要独⽴部署
  • 技术选型灵活,真的必要吗?

02 微服务平台和微前端对⽐

-微服务微前端备注
服务独⽴服务,⽐如交易服务应⽤或者模块,⽐如导航服务是不会相互影响的
服务治理服务注册/发现/依赖管理/跟踪/降级/限流/⽇志/应⽤的发现/路由/监控/降级/运⾏/注销/聚合 等需要⼀个/多个系统统⼀处理⼀些上层的事情
服务通信HTTP / RPC/ 中间件eventBus/ sharedWorker/ LocalStorage

03 微前端基本构成

  • 中心化路由,服务注册中心
  • 标识化应用
  • 设计一定的生命周期
  • 部署和配置自动化
部署更新
title:常见的微前端结构
应用信息
主程序 js/css/assets/common Router.EventBus.LifeCycle
应用1js/css/assets
应用2js/css/assets

应用场景

常见场景

  • 是将单个应⽤拆分为多个独⽴的应⽤,通过导航栏和动态加载来实现⽆缝的切换
  • 单个⻚⾯上的模块也可以拆分为不同的微前端

如何实施微前端

**拆分和聚合 **

常⻅的⽅式

⼤仓库通过 monorepo methodology 做成npm包,集成主项⽬ 拆分多仓库,动态加载的⽅式进⾏集成

常见技术实现方案

    1. 通过IFrame⽅式进⾏聚合
    2. 使⽤WebComponent构建应⽤
    3. 在不同的框架之上设计通讯、加载机制,诸如 Single-SPA
iframe现存问题
  • 不可控制:iframe嵌⼊的显示区⼤⼩不容易控制,存在⼀定 局限性

  • bfcache! URL的记录完全⽆效,⻚⾯刷新不能够被记忆, 刷新会返回⾸⻚,iframe功能之间跳转也⽆效。

  • 兼容性坑 iframe的样式显示、兼容性等都具有局限性

  • 性能开销 frame 阻塞 onload、占⽤连接池、多层嵌套⻚ ⾯崩溃。。

iframe方案实现方式
  • 通过菜单聚合,含有两个应⽤ Vue/React
  • 刷新需要保持状态

在这里插入图片描述

对于⼀些共⽤ UI 组件⽽⾔,仍然需要重复加载。这也就是 iframe 模式下的问题 

   Iframe嵌套是⼀个⽐较⼤的问题

   Iframe在移动端适配的时候存在⼀些兼容性问题

Iframe的优势也⽐较明显

   改造成本低,可以快速上线
   
   沙盒模型,各个模块天然隔离,不需要考虑样式污染,应⽤之间的相互影响
WebComponents

场景:单⻚⾯应⽤,业务⽐较复杂,需要解耦

开发效果
  • ⽅案: 分为三个模块,专⼈维护
  • ⻚⾯相同的技术栈和规范,构建相同
开发示意图

在这里插入图片描述

SIngle-SPA

业务越来越复杂了, 有些应⽤要其他技术栈

SIngle-SPA-Portal

技术栈多样

代码太⼤,需要拆库

需要独⽴部署,减少影响

难点: 公共库如何管理,如何解决CSS冲突的问题

qiankun
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值