服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - 这么好的微前端解决方案你顶得住?

这么好的微前端解决方案你顶得住?

2020-12-09 23:19今日头条快快网络 编程技术

微前端概念由微服务概念延展而来,摒弃大型单体方式,将前端整体分解为小而简单的块,这些块可以独立开发、测试和部署,同时仍然聚合为一个产品出现在客户面前。

前端概念由微服务概念延展而来,摒弃大型单体方式,将前端整体分解为小而简单的块,这些块可以独立开发、测试和部署,同时仍然聚合为一个产品出现在客户面前。

微前端不是一门具体的技术,而是整合了技术、策略和方法,可能会以脚手架、辅助插件和规范约束这种生态圈形式展示出来,是一种宏观上的架构。这种架构目前有多种方案,都有利弊之处,但只要适用当前业务场景的就是好方案。

这么好的微前端解决方案你顶得住?

1. iframe

iframe 是 html 提供的标签, 可以加载其他web应用的内容 ,还能兼容所有的浏览器,所以它可以加载全部你想要加载的web应用 。它最大的特点就是提供了浏览器原生的硬隔离方案,无论是样式隔离、js 隔离这类问题全部都能完美解决。

iframe虽然能基本做到微前端所该做的所有事情,但它的隔离性无法被突破,导致应用间上下文无法被共享,会带来开发体验、产品体验的问题。不是单页应用,会导致浏览器刷新 iframe url 状态丢失、后退前进按钮无法使用。

2. ES Module

微前端无外乎三大特性, 无技术栈限制 、 应用单独开发 , 多应用整合 。

无技术栈限制: ESM 加载的只是js内容,无论哪个框架,最终都要编译成js,所以等于ESM 都能加载。

应用单独开发:ESM只是js的一种规范,不会影响应用的开发模式。

多应用整合:只要将微应用以 ESM 的方式暴露出来,就能正常加载。远程加载模块: ESM 能够直接请求 cdn 资源。ESM 也存在着兼容性这个弊端,大部分老版的浏览无法直接使用,不过他可以通过 webpack 、 rollup 、 esbuild 、 snowpack 等编译工具成为兼容性的代码。

3. qiankun

在微前端界, qiankun 称得上是最早成型且知名度最广的框架了,qiankun 的特点在其官网中是这样说的:

基于 single-spa 封装,提供了更加开箱即用的 API技术栈无关,任意技术栈的应用均可使用,不论是React/Vue/Angular/JQuery 还是其他等框架HTML Entry 接入方式,让你接入微应用像使用 iframe 一样简单样式隔离,保证微应用之间样式互相不干扰JS 沙箱,微应用之间全局变量/事件不冲突资源预加载。

4. EMP

Federation 实现,达到第三方依赖共享,减少不必要的代码引入的目的。每个微应用独立部署运行,并通过cdn的方式引入主程序中,所以只要部署一次,即可提供给任何基于 Module Federation 的应用使用。而且这部分代码是远程引入,不必参加应用的打包。

EMP 通过 cdn 加载微应用,所以每个微应用中的代码有变动时,不用重新打包发布就能加载到最新的微应用。每个微应用间都可以引入其他的微应用,没有中心应用的概念。跨技术栈组件式调用,提供了在主应用框架中可以调用其他框架组件的能力。

开发者可以按需加载,选择加载微应用中需要的部分,不强制将整个应用全部加载。每一个应用都可以进行状态共享,就像使用npm模块进行开发一样,十分方便。EMP 除了具备微前端的能力外,也有跨应用状态共享、跨框架组件调用的能力,这是它优秀的地方!

原文地址:https://www.toutiao.com/i6904177734583321101/

延伸 · 阅读

精彩推荐
  • 编程技术真正聪明的程序员,总有办法不加班

    真正聪明的程序员,总有办法不加班

    工作效率提升了,就可以少加班了,聪明的程序员,总会有一堆可以提升编码效率的工具?当一种工具满足不了工作需求,就去探索新的,今天纬小创就给...

    今日头条12482021-03-04
  • 编程技术简单、好懂的Svelte实现原理

    简单、好懂的Svelte实现原理

    本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一边看、一边敲、一边学...

    魔术师卡颂4822021-11-10
  • 编程技术AIOps,SRE工程师手中的利器

    AIOps,SRE工程师手中的利器

    AIOps开始成为一种极为重要的站点可靠性工程工具。它能够高效吸纳观察数据、参与数据以及来自第三方工具的数据,判断系统运行状态并保证其处于最佳...

    至顶网5962021-03-08
  • 编程技术Delphi - Indy idMessage和idSMTP实现邮件的发送

    Delphi - Indy idMessage和idSMTP实现邮件的发送

    这篇文章主要介绍了Delphi - Indy idMessage和idSMTP实现邮件的发送,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    JJ_JeremyWu6592020-09-22
  • 编程技术从Context源码实现谈React性能优化

    从Context源码实现谈React性能优化

    这篇文章主要介绍Context的实现原理,源码层面掌握React组件的render时机,从而写出高性能的React组件,源码层面了解shouldComponentUpdate、React.memo、PureComponen...

    魔术师卡颂5312020-12-20
  • 编程技术2021年值得关注的React PDF 库

    2021年值得关注的React PDF 库

    今天,许多网络应用程序为其用户提供内置的PDF浏览选项。然而,选择一个并不容易,因为它们的功能远远超过显示PDF。在这篇文章中,我将评估5个React的...

    TianTianUp5222021-06-21
  • 编程技术用户态 Tcpdump 如何实现抓到内核网络包的?

    用户态 Tcpdump 如何实现抓到内核网络包的?

    在网络包的发送和接收过程中,绝大部分的工作都是在内核态完成的。那么问题来了,我们常用的运行在用户态的程序 tcpdump 是那如何实现抓到内核态的包...

    开发内功修炼11612021-09-08
  • 编程技术让开发效率倍增的 VS Code 插件

    让开发效率倍增的 VS Code 插件

    今天来分享一些提升开发效率的实用 VS Code 插件!Better Comments 扩展可以帮助我们在代码中创建更人性化的注释,有不同形式和颜色的注释供我们选择。 ...

    前端充电宝7132022-04-21