浅析微前端基础原理

一、什么是微前端

为了解决庞大的一整块后端服务带来的变更与扩展方面的限制,出现的微服务架构

微服务是面向服务架构(SOA)的一种变体,把应用程序设计成一系列松耦合的细粒度服务,并通过轻量级的通信协议组织起来。
具体地,将应用构建成一组小型服务。这些服务都能够独立部署、独立扩展,每个服务都具有稳固的模块边界,甚至允许使用不同的编程语言来编写不同服务,也可以由不同的团队来管理。

然而,越来越重的前端工程也面临同样的问题,自然地想到了将微服务思想应用(照搬)到前端,于是有了微前端(micro-frontends)的概念:

即,一种由独立交付的多个前端应用组成整体的架构风格。具体的,将前端应用分解成一些更小、更简单的能够独立开发、测试、部署的小块,而在用户看来仍然是内聚的单个产品。

二、微前端的价值

微前端架构具备以下几个核心价值:
● 技术栈无关:主框架不限制接入应用的技术栈,子应用具备完全自主权。
● 独立开发、独立部署:子应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新。
● 独立运行时: 每个子应用之间状态隔离,运行时状态不共享

微前端架构主要在于解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用(Frontend Monolith)后,随之而来的应用不可维护的问题。

三、最早的微前端

single-spa

single-spa 是一个将多个单页面应用聚合为一个整体应用的 JavaScript 微前端框架。 使用 single-spa 进行前端架构设计可以带来很多好处,例如:
● 在同一页面上使用多个前端框架而不用刷新页面 (React, Vue, Angular, Ember… )
● 独立部署每一个单页面应用
● 新功能使用新框架,旧的单页应用不用重写可以共存
● 改善初始加载时间,迟加载代码

它一开始的定位其实是想在一个页面或一个项目使用多个前端框架,后续才被发展为解决“巨石”应用拆分的问题,也就大家推崇的开发模式,应用的功能实现与技术栈无关,独立开发,独立部署。

我们先来看看它的两种应用渲染方式,基于路由控制的应用渲染不受路由控制的应用渲染,这两种方式奠定后续的微前端发展的基础。

1.基于路由控制的应用渲染

import { registerApplication, start } from 'single-spa';

singleSpa.registerApplication(
  appName, // 应用名称
  applicationOrLoadingFn, // 应用或者应用的加载函数
  activityFn, // 激活应用的函数
);
import { registerApplication, start } from 'single-spa';

singleSpa.registerApplication(
  'optimus',
  () => System.import('https://xxxx.cdn.com/flabfe/optimus/0.8.26/index.js'),
  location => location.pathname.startsWith('/optimus'),
);

基于路由控制的应用渲染,依赖了下面三部分的实现:

a.路由控制

在 single-spa 里面,它会监听 hashchangepopstate 事件,如果有变化的话,执行一遍所有应用的激活函数&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叨槿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值