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

qiankun解决的问题

  1. qiankun 中的沙箱机制是如何实现的?解决了什么问题?

一、实现方式

qiankun 的沙箱机制主要用于隔离微应用之间的运行环境,避免相互影响。其核心实现基于两种策略:

  1. 快照沙箱(SnapshotSandbox)

适用于不支持 Proxy 的低版本浏览器。

每次微应用切换时,记录 window 的状态(如全局变量),卸载时恢复原状态。

缺点:性能差、不支持多实例并发。

  1. Proxy 沙箱(ProxySandbox)

主要依赖于 Proxy 实现沙箱。

为每个微应用创建一个 Proxy(window) 的代理对象,拦截所有对 window 的修改,限制作用域。

示例:

const sandbox = new Proxy(window, {
set(target, prop, value) {
// 只修改沙箱中的对象,不影响全局
sandboxState[prop] = value;
return true;
},
get(target, prop) {
return sandboxState.hasOwnProperty(prop) ? sandboxState[prop] : target[prop];
}
});

优点:性能好,支持多个微应用并发运行。

  1. 样式隔离机制

除了 JS 沙箱外,还支持样式隔离:

Scoped CSS:通过添加前缀/标记隔离样式。

Shadow DOM:更彻底的样式隔离(实验性)。


二、解决的问题

  1. 全局变量污染

每个微应用都可能操作 window,如 window.appName = ‘a’,会造成冲突。

沙箱确保这些变量只在自己的作用域内生效。

  1. 样式冲突

不同微应用中的 CSS 可能互相覆盖。

样式隔离防止样式干扰。

  1. 多实例并发运行

Proxy 沙箱允许多个微应用同时存在于页面中,互不影响。

  1. 应用卸载时状态回滚

退出微应用时能恢复主应用或其它子应用原本的状态。


三、总结一句话

qiankun 通过 Proxy 等技术实现沙箱机制,有效隔离微应用之间的 JS 和 CSS 环境,解决全局变量冲突、样式污染、多实例运行等问题,是微前端稳定运行的核心保障。

http://www.lryc.cn/news/2385449.html

相关文章:

  • JavaScript从入门到精通(一)
  • 快速失败(fail-fast)和安全失败(fail-safe)的区别
  • 虚拟环境中的PyQt5 Pycharm设置参考
  • AI 笔记 - 模型优化 - 注意力机制在目标检测上的使用
  • AUTOSAR图解==>AUTOSAR_SRS_LIN
  • UML 时序图 使用案例
  • 华为昇腾使用ollama本地部署DeepSeek大模型
  • 多态的总结
  • Windows 高分辨率屏幕适配指南:解决界面过小、模糊错位问题
  • tvalid寄存器的理解
  • C++八股 —— 手撕定时器
  • K8S-statefulset-mysql-ha
  • 【方案分享】展厅智能讲解:基于BLE蓝牙Beacon的自动讲解触发技术实现
  • web常见的攻击方式有哪些?如何防御?
  • 力扣:《螺旋矩阵》系列题目
  • 发电厂进阶,modbus TCP转ethernet ip网关如何赋能能源行业
  • 深入了解linux系统—— 操作系统的路径缓冲与链接机制
  • Ansible快速入门指南
  • 华为2025年校招笔试真题手撕教程(一)
  • 第9.2讲、Tiny Decoder(带 Mask)详解与实战
  • postgresql 常用参数配置
  • Python模块中的私有命名与命名空间管理:深入解析与实践指南
  • 基于PCRLB的CMIMO雷达网络多目标跟踪资源调度
  • AtCoder Beginner Contest 407(ABCDE)
  • VILT模型阅读笔记
  • 掌握 npm 核心操作:从安装到管理依赖的完整指南
  • OpenCV CUDA模块特征检测与描述------一种基于快速特征点检测和旋转不变的二进制描述符类cv::cuda::ORB
  • Awesome ChatGPT Prompts:释放AI对话潜力的开源利器
  • Prompt Tuning:轻量级微调与反向传播揭秘
  • C++ 继承详解:基础篇(含代码示例)