当前位置: 首页 > news >正文

微前端记录

微前端

实习过程中,做了些微前端方向的调研,记录下
微前端将前端拆分为独立的可以单独运行,测试,部署的代码, 具有技术栈无关,多团队,多业务线协作的特点。
前端现有的页面,分为单页应用和多页应用,各有优劣, spa单页 通信方便,前进后退对用户的感知友好。提前预加载等性能优化措施。mpa将系统分为多个仓库维护,在首页聚合所有平台的入口
iframe 在微前端框架流行前, 是一种非常好的解决方案,这是浏览器的原生的隔离方案,主要是样式隔离,js隔离等等问题都能被轻松的解决到。但是隔离性无法突破,导致应用上下文之间无法被共享。 主要涉及 路由不同步,刷新, 前进后退的失效,dom割裂,通信困难, 白屏事件,并且并非一个文档上下文,那么对于事件的冒泡捕获等等就会有影响。预加载,共享组件库等问题。
还可以通过发npm包来实现,通过npm包的形式引入,当公共组件升级,那么项目要宠幸升级上线。
这种方式也丧失了动态下发代码的能力。
模块联邦的方式,主要是EMP,欢聚时代,我尝试的时候,对于已有项目的接入不太友好。一种远程模块动态加载,运行技术。允许将当前构建的应用作为容器应用,异步加载远程模块,允许将原本的单个应用按照理想的方式拆分,然后进行加载。
但是缺少沙箱隔离,可能会导致js变量污染。缺乏css隔离, 版本控制,需要显示配置路径,版本控制存在和npm一样的缺点。
尽管iframe存在问题,但是可以借助其思想。 iframe 加载文档,1. 文档加载,2. html渲染,3. JavaScript执行,4. JS隔离。
spa的微前端架构,从设计层面上是基座和子应用分治。基座进行注册,并下发信息,子应用收到信息后,进行渲染。

考虑

1, 应用加载, 在应用没有被激活之前,需要考虑应用层面对不同标准的应用的时候,框架需要的加载策略是不同的,js bundle 和umd规范的标准。fetch script标签的能力,但是对于esm 的标准,需要使用动态import的方式。 设计预加载,html入口,拆分dom style script js入口, 解析子应用
2. 应用调度, 提供子应用的声明周期
3. 沙箱隔离 收集副作用, 多个实例收集副作用
4. 路由系统 不用应用路由不同步, 不用应用对路由的响应 路由劫持系统
5. 应用通信

副作用

  1. html中包含,script style link
  2. 动态副作用 动态创建的style ,link dom, 添加全局变量, 添加定时器,网络请求,localstorage 等对当前页面产生影响的内容
隔离

快照沙箱
通过快照的方式来保存当前的执行环境,在应用销毁后,回退到之前的执行环境
css样式隔离方案
css模块化, 通过import方式来引入样式
样式约定以及工程化, 各个子应用都约定自己的特有前缀
shadow dom
完全解决了样式隔离,游离在dom树之外的shadow dom, 将dom和css隔离开来,但是由于浏览器的兼容问题, 可靠性得考虑
Web components 的一个重要属性是封装——可以将标记结构、样式和行为隐藏起来,并与页面上的其他代码相隔离,保证不同的部分不会混在一起,可使代码更加干净、整洁。其中,Shadow DOM 接口是关键所在,它可以将一个隐藏的、独立的 DOM 附加到一个元素上。
在这里插入图片描述

css in js
动态加载卸载样式表

未完待续
http://www.xdnf.cn/news/528085.html

相关文章:

  • MFC 编程中 OnInitDialog 函数
  • YOLOV3 深度解析:目标检测的高效利器
  • vue3与springboot交互-前后分离【验证element-ui输入的内容】
  • w~自动驾驶~合集3
  • Linux内核深入学习(4)——内核常见的数据结构之链表
  • 超小多模态视觉语言模型MiniMind-V 训练
  • Java实现PDF加水印功能:技术解析与实践指南
  • leetcode239 滑动窗口最大值deque方式
  • 阿里云国际站与国内站:局势推进中的多维差异
  • TYUT-企业级开发教程-第四章
  • PyTorch图像建模(图像识别、分割和分类案例)
  • (1-5)Java 常用工具类、
  • 用 CodeBuddy 实现「IdeaSpark 每日灵感卡」:一场 UI 与灵感的极简之旅
  • 【Linux】守护进程
  • 数据中心 智慧机房解决方案
  • 力扣560.和为K的子数组
  • FLASHDB API分析
  • 爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案
  • MacOS安装软件后无法启动报错:“已损坏,无法打开,你应该将它移到废纸篓“
  • MySQL企业版免费开启,强先体验
  • 如何使用VCS+XA加密verilog和spice网表
  • JVM的垃圾回收机制
  • 猎板PCB多层层压工艺能力及流程
  • Word2Vec 模型的工作原理
  • c#基础01(.Net介绍)
  • 图漾相机错误码解析(待补充)
  • 51单片机实现流水灯
  • 大数据hadoop小文件处理方案
  • 解锁MySQL性能调优:高级SQL技巧实战指南
  • visual studio code中的插件都是怎么开发的?用的什么编程语言?