文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

你需要了解的几种微前端解决方案

2024-12-03 16:12

关注

一、写在前面

在之前的文章中,我们已经深入剖析了 微前端究竟是什么,可以带来什么收益 ,现在让我们复习一下微前端的概念:

  1. Techniques, strategies and recipes for building a modern web app with multiple teams that can ship features independently. 

中文释义:

可以由多个团队独立开发的现代web应用程序的技术、策略和方案。

本文则是在此基础上对现有的微前端解决方案进行对比总结,废话少说,让我们开始今天的课题。

二、现有微前端解决方案

查找了大量的资料后,我总结了以下主流的能够真正实现微前端概念的解决方案,如有遗漏,欢迎小伙伴们补充~

1、iframe

众所周知, iframe 是 html 提供的标签, 能加载其他web应用的内容 ,并且它能兼容所有的浏览器,因此,你可以用它来 加载任何你想要加载的web应用 

iframe最大的特性就是提供了浏览器原生的硬隔离方案,不论是样式隔离、js 隔离这类问题统统都能被完美解决。读到这时,相信小伙伴们跟我一样,觉得iframe与微前端概念中提到的 独立开发 、 独立维护 、 相互隔离 非常的吻合,有种直接上ifame就完事儿了的想法,但为何它到现在也不是微前端主要的实现方式呢,后来有幸拜读了 qiankun技术圆桌 中一篇关于微前端 Why Not Iframe 的思考,总结的很到位,现复述其中的一段描述

iframe虽然基本能做到微前端所要做的所有事情,但它的最大问题也在于他的隔离性无法被突破,导致应用间上下文无法被共享,随之带来开发体验、产品体验的问题。

以下是我对该文中总结部分的总结:

我猜,以上原因便是 iframe 没能作为官方微前端方案的原因吧。

2、Web Components

或许很多小伙伴对 Web Components 不是很了解,它是由 google 推出的浏览器的原生组件, MDN 对 Web Components 的定义是这样的:

作为开发者,我们都知道尽可能多的重用代码是一个好主意。这对于自定义标记结构来说通常不是那么容易 — 想想复杂的HTML(以及相关的样式和脚本),有时您不得不写代码来呈现自定义UI控件,并且如果您不小心的话,多次使用它们会使您的页面变得一团糟。

Web Components旨在解决这些问题 — 它由三项主要技术组成,它们可以一起使用来创建封装功能的定制元素,可以在你喜欢的任何地方重用,不必担心代码冲突。

它的 三项主要技术 是指: