微前端-qiankun

参考文章:
微前端到底是什么?
微前端入门:从single-spa到qiankun

什么是微前端

相关:微服务架构

微服务是面向服务架构(SOA)的一种变体,把应用程序设计成一系列松耦合细粒度服务,并通过轻量级的通信协议组织起来

具体地,将应用构建成一组小型服务。这些服务都能够独立部署、独立扩展,每个服务都具有稳固的模块边界,甚至允许使用不同的编程语言来编写不同服务,也可以由不同的团队来管理

微前端的灵感就来源于微服务架构。
微前端,将一个庞大复杂的前端应用分解成一些更小的、更简单的并且能够独立开发、测试、部署的小块,而在用户看来仍然是内聚的单个产品。先拆再合。

为什么要用微前端/微前端的特点

  • 代码库更小,更内聚,可维护性更高。主项目只需要提供基本的配置支持。具体业务交给各个微前端独自完成。
  • 松耦合,可拓展性更高。可以在不影响已存在的项目上,动态地添加新的微前端项目。
  • 可渐进地升级、更新甚至重写部分前端功能。每个微前端项目独自运行、分开维护。可以单独对旧的、技术栈落后之类的微前端进行单独升级而不影响其他模块。
  • 独立部署。每个微前端项目的开发、测试、部署互不干涉,独立维护。在不同的微前端项目上完全可以使用不同的技术栈。

微前端怎么用

  • 多个 Bundle 如何集成?
  • 子应用之间怎样隔离影响?
  • 公共资源如何复用?
  • 子应用间怎样通信?
  • 如何测试?
多 Bundle 集成

功能独立的微前端最终会集结到一个主应用(容器应用)上。这个主应用的功能主要有:

  • 渲染公共的页面元素,比如header、footer
  • 维护公共数据。比如用户信息、token。
  • 将各个微前端整个到一个页面上,控制微前端的渲染及其渲染区域。
    集成的方式:
  • 服务端集成。
  • 构建时集成。不推荐,发布阶段会造成耦合。
  • 运行时集成。运行时才对获取对应微前端代码进行集成。常用方式有:iframe,js前端路由,web components…目前最常见方式即是前端路由方式。每个子应用暴露出渲染函数,主应用在启动时加载各个子应用的独立 Bundle,之后根据路由规则渲染相应的子应用。目前看来,是最灵活的方式。
子应用影响隔离
  • 样式隔离:开发规范(如BEM)、CSS 预处理(如SASS)、模块定义(如CSS Module)、用 JS 来写(CSS-in-JS)、以及shadow DOM特性
  • 作用域隔离:各种模块定义(如ES Module、AMD、Common Module、UMD)
应用间通信
  • 路由参数。简单直接,方便有效。
  • 全局变量通信。
  • 基于 CustomEvent 实现通信(window的原生API)
  • 基于props主子应用间通信

微前端缺点

  • 用户流量负担。独立构建意味着公共资源的冗余,继而增加用户的流量负担
  • 操作/管理上的复杂性。

微前端框架

客户端:

  • Piral
  • Open
  • Components
  • qiankun
  • Luigi
  • Frint.js
    服务端:
  • Mosaic
  • PuzzleJs
  • Podium
  • Micromono

只用过qiankun,先只关注qiankun.

2018年 Single-SPA诞生了, single-spa 是一个用于前端微服务化的 JavaScript 前端解决 方案 (本身没有处理样式隔离, js 执行隔离) 实现了路由劫持和应用加载(即根据不同的路由加载不同的应用)
2019年6月,qiankun 1.0 发布。qiankun 1.0基于Single-SPA,提供更加开箱即用的 API,做到了技术栈无关、并且接入简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值