qiankun沙箱实现原理

浅谈乾坤JS隔离的三种机制(快照沙箱、两种代理沙箱) 从上面的代码可以看出,ProxySandbox不存在状态恢复的逻辑,因为所有的变化都是沙箱内部的变化,和window没有关系,window上的属性自始至终都没有受到过影响。支持多应用的代理沙箱则可以为每个微应用创建一个独立的沙箱环境,避免了多个应用之间的状态混乱问题。支持多应用的代理沙箱则可以支持多个微应用同时运行,因为它可以为每个微应用创建一个独立的沙箱环境,避免了多个应用之间的状态混乱问题。同时,支持多应用的代理沙箱也不需要遍历window上的所有属性,因为它只会代理微应用需要的属性,从而提高了性能。 阅读详情

前言

  Qiankun 设置沙箱(Sandbox)主要是为了实现子应用之间的隔离,防止子应用之间的全局变量污染和副作用。Qiankun 使用了多种技术手段来实现这一目标,包括但不限于 JavaScript 的 Proxy 对象、自定义的全局变量管理等。

Qiankun 沙箱实现原理

Qiankun 的沙箱实现主要通过以下几个步骤来完成:

1.全局变量隔离:

  • Qiankun 使用 Proxy 对象来拦截对全局变量的访问和修改。
  • 当子应用试图访问或修改全局变量时,Qiankun 会捕获这些操作,并在沙箱环境中进行处理。

2.DOM 操作隔离:

  • Qiankun 通过创建一个虚拟的 DOM 环境来隔离子应用的 DOM 操作。
  • 子应用的 DOM 操作会被映射到这个虚拟的 DOM 环境中,从而不影响主应用和其他子应用。

3.事件隔离:

  • Qiankun 会对子应用中发生的事件进行监听和管理,确保事件不会影响到全局范围。

具体实现细节

使用 Proxy 对象

  Qiankun 使用 Proxy 对象来拦截对全局变量的操作,从而实现全局变量的隔离。

const sandbox = {
   
   
  global: window,
};

const proxyHandler = {
   
   
  get(target, key) {
   
   
    // 拦截对全局变量的访问
    return Reflect.get(sandbox.global, key) || target[key];
  },
  set(target, key, value) {
   
   
    // 拦截对全局变量的修改
    sandbox.global[key] = value;
    return true;
  },
};

// 创建一个全局变量的代理对象
window = new Proxy(sandbox, proxyHandler);

2.DOM 操作隔离

  Qiankun 通过创建一个沙箱 DOM 环境来隔离子应用的 DOM 操作。

function
qiankun原理解析 qiankun 是一个基于single-spa框架实现的一个微前端框架,single-spa虽然实现了路由劫持和应用加载,但是没有实现样式隔离和js隔离,并不是一个完善的微前端框架; 阅读详情

相关推荐

微前端学习笔记(3):前端沙箱之JavaScript的sandbox(沙盒/沙箱)

多实例运行语法兼容不污染全局环境(主应用)❌❌❌✅❌✅❌✅❌iframe✅✅✅转载本站文章《微前端学习笔记(3):前端沙箱之JavaScript的sandbox(沙盒/沙箱)》,微前端学习笔记(3):前端沙箱之JavaScript的sandbox(沙盒/沙箱) - 前端架构设计 - 周陆军的个人网站。

周陆军的博客,分享it技术。 2419

万字长文+图文并茂+全面解析微前端框架 qiankun 源码 - qiankun 篇

写在开头 微前端系列文章: 基于 qiankun 的微前端最佳实践(万字长文) - 从 0 到 1 篇 基于 qiankun 的微前端最佳实践(图文并茂) - 应用间通信篇 基于 qiankun 的微前端最佳实践(图文并茂) - 应用部署篇 万字长文+图文并茂+全面解析微前端框架 qiankun 源码 - qiankun 篇 本系列其他文章计划一到两个月内完成,点个 关注 不迷路。 计划如下: 生命周期篇; IE 兼容篇; 性能优化、缓存方案篇; 概述 本文将针对微前端框架 qiankun 的源码.

mingyuanyunlian的博客 2549

微前端框架实战指南:Qiankun、Single-SPA、Wujie 如何选型与落地?

本文深入对比了三大主流微前端框架Qiankun、Single-SPA和Wujie的核心特性与适用场景。Qiankun提供开箱即用的沙箱隔离,适合快速整合异构技术栈;Single-SPA高度灵活,适合深度定制;Wujie基于iframe实现零改造集成,适合绝对隔离需求。文章通过实战决策矩阵,帮助开发者根据项目特点进行精准选型与落地。

v6b7n8m9q0的博客 1094

qiankun微前端架构核心原理与实战指南

微前端架构通过解耦巨石应用为独立模块,实现技术栈无关的渐进式开发。其核心原理包含HTML Entry资源加载机制、基于Proxy的JS沙箱隔离和动态样式表管理,有效解决了多技术栈共存和样式污染问题。在工程实践中,这种架构显著降低旧系统改造成本约60%,特别适合中后台系统和技术栈迁移场景。以qiankun为代表的解决方案支持React、Vue等框架混合开发,通过预加载和资源复用可使应用加载速度提升40-60%,现已成为金融、电商等领域的主流微前端实施方案。

weixin_31155097的博客 99

微前端架构实战:qiankun原理、沙箱隔离与性能优化指南

前端应用规模膨胀时,单体仓库的编译效率、团队协作和发布流程都会成为瓶颈。微前端架构通过将应用拆分为多个可独立开发、独立部署的子应用,从物理边界上化解耦合问题。qiankun 作为国内主流方案,基于 single-spa 封装了 JS 沙箱与样式隔离机制,利用 Proxy 代理隔离全局变量,通过 Shadow DOM 或选择器前缀防止样式污染,从而支撑多团队在统一产品中并行迭代。它带来的价值在于提升发布灵活性和团队自治能力,但也需要额外承担通信、隔离与运维成本。适用场景包括多团队共用一个中后台系统、子模块生命

weixin_28475533的博客 309

qiankun微前端架构实战:从原理到最佳实践

微前端架构通过将单体应用拆分为独立子应用,解决了大型前端项目的维护难题。其核心原理包括应用隔离、独立部署和技术栈无关性,其中JS沙箱和样式隔离确保子应用间互不干扰。qiankun作为阿里开源的微前端解决方案,通过HTML Entry机制优化资源加载,相比传统JS Entry减少冗余依赖。在实际工程中,这种架构特别适合中后台系统、多团队协作等场景,能显著提升开发效率和部署灵活性。本文以qiankun为例,详解主-子应用搭建、通信机制和性能优化策略,并分享样式隔离、路由冲突等常见问题的解决方案。

weixin_29280219的博客 199

深入解析qiankun微前端框架原理与实战

微前端架构是现代前端工程化的重要解决方案,通过将单体应用拆分为多个独立子应用,实现技术栈无关性和独立部署。其核心原理包括应用注册、沙箱隔离、资源加载和生命周期管理。qiankun作为基于Single-SPA的微前端框架,提供了完整的JS/CSS沙箱隔离、HTML Entry资源加载和全局状态通信机制,大幅降低了微前端实施门槛。在大型企业级应用中,该技术能有效解决多团队协作、技术栈迁移和性能优化等工程难题。特别是在金融、电商等复杂业务系统中,通过qiankun实现的渐进式迁移策略,既能保证系统稳定性,又能实现

weixin_29722783的博客 184

微前端架构常见框架

本文分析了多种微前端实现方案及其优缺点。传统iframe方案存在URL状态丢失、UI不同步、通信困难等问题。single-spa框架通过生命周期管理实现微前端,但需处理样式隔离、JS隔离等挑战。qiankun基于single-spa优化,采用Proxy实现沙箱隔离,但全局弹窗等问题仍有待解决。ModuleFederation通过Webpack实现模块共享,适合模块化场景。字节Garfish提供完整生命周期管理,支持手动控制子应用。

分享前端工程化、AI 应用、Agent 开发与大模型实践! 1335

蚂蚁前端面试复盘:从事件循环到微前端的实战指南

前端开发者在进阶过程中,不仅要掌握框架API,更要深入理解JavaScript事件循环、浏览器渲染机制等底层原理。大厂面试尤其注重考察候选人对这些基础概念的深度理解,并会通过项目深挖验证工程实践能力。从事件循环与渲染时机的关联,到微前端架构中的沙箱实现与样式隔离,再到性能优化的量化分析与虚拟列表的手写实现,这些高频考点共同指向一种能力:能否把知识串成体系并落地到真实场景。本文基于一线大厂前端面试的真实经历,按轮次拆解了从技术初面到HR面的完整流程,复盘了面试中的典型追问路径与常见误区,并总结了项目复盘、手写

weixin_29007135的博客 371

字节跳动前端面试全攻略:高频考点与系统设计

前端开发领域,系统设计与工程化能力已成为大厂面试的核心考察点。从技术原理层面,虚拟DOM、响应式系统等框架设计思想决定了应用性能上限;而Webpack、Babel等工具链的深度理解则体现工程实践能力。在字节跳动等一线互联网企业的面试中,候选人常需应对手写Promise.all、微前端架构设计等典型场景题,这些题目既考察JavaScript语言特性掌握,也检验系统思维。优秀的解决方案往往需要结合HTTP/2、WebSocket等网络协议特性,以及缓存策略、懒加载等性能优化手段。特别值得注意的是,React H

weixin_29021291的博客 277

React微前端实战:qiankun沙箱原理与生产级落地指南

微前端是一种将单体前端按业务域拆分为独立子应用的架构范式,其核心原理是通过运行时容器实现隔离与协同。技术价值在于解决多团队并行开发中的构建耦合、发布冲突和维护成本问题,显著提升中大型前端组织的交付效率与系统韧性。典型应用场景包括电商后台、企业中台、BI平台等存在多业务线长期共存需求的系统。本文聚焦React生态下qiankun框架的深度实践,涵盖Proxy沙箱机制、样式隔离实现、子应用生命周期管理及Webpack构建避坑等关键环节,为工程化落地提供可复用的技术路径。

weixin_30876945的博客 620

Qiankun 微前端框架全面解析:架构、原理与最佳实践

Qiankun是阿里巴巴开源的一款微前端框架,它基于single-spa进行封装,提供了更简单的API以及更强的隔离能力,适用于多种前端框架(Vue、React、Angular)。灵活的子应用管理完善的应用隔离机制高效的状态管理与通信优化的加载性能在企业级项目中,Qiankun可以帮助团队更好地拆分前端应用,提升开发效率与可维护性。如果你正在考虑微前端架构,Qiankun是一个值得尝试的选择!如有问题,欢迎留言讨论!

赵大仁的博客 1687

微前端-qiankun

借鉴了微服务的概念,将一个放大的巨石应用拆分多个独立灵活的小型应用,每个应用过都可以独立开发、独立运行、独立部署,还可以随意组合,降低耦合度,更灵活。:在面对各种复杂场景时,我们通常很难对一个已经存在的系统做全量的技术栈升级或重构,而微前端是一种非常好的实施渐进式重构的手段和策略。qiankun :产由阿里巴巴,基于single-spa,在它的基础上增加了很多功能。:微应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新。:主框架不限制接入应用的技术栈,微应用具备完全自主权。

weixin_44922119的博客 2653

【高频考点精讲】微前端架构实战:qiankun框架的核心原理和应用场景

🧑‍🏫:全栈老李📅:2025 年 6 月🧑‍💻:前端初学者、进阶开发者🚀:本文由全栈老李原创,转载请注明出处。大家好,我是全栈老李。今天咱们来聊聊微前端这个热门话题,特别是qiankun这个国产框架。最近几年,微前端在前端圈子里越来越火,但很多同学对它的理解还停留在"把几个项目拼在一起"的层面。今天我就带大家深入剖析qiankun的核心原理,顺便分享几个实战中的坑和技巧。

全栈老李的博客 1267

微前端知识内容

Shared State(全局状态管理):使用 qiankun 提供的 initGlobalState,或者采用 Redux、Pinia 等库共享状态。registerMicroApps() 方法用于注册子应用,配置 name、entry、container、activeRule 等参数。如果你有特定项目上的挑战,也可以详细探讨。主要基于 single-spa,并进行二次封装,提供更好的 应用加载管理、沙箱隔离、应用通信 能力。通过劫持路由(Hash/History),监听路径变化,加载对应的子应用。

weixin_45825917的博客 306

qiankun微前端原理及部分源码解读

微前端qiankun原理及源码解读

lyn1772671980的博客 1927

Livox-avia+FAST-LIO麻瓜使用教程

激光雷达 SLAM Fastlio 安装

aaaaaaaaaww12的博客 3675

别再乱选离散化方法了!从零到一用Matlab对比差分、双线性Tustin和预矫正的实战效果

本文深入探讨了Matlab中四种主流离散化方法(差分、双线性Tustin和预矫正)的实战效果对比,帮助工程师在数字控制系统设计中做出明智选择。通过详细的理论分析和Matlab代码示例,展示了不同方法在稳定性、频率响应和计算复杂度上的差异,并提供了针对不同场景的工程选用指南。

weixin_28737603的博客 141

PySide6 vs PyQt6:新手如何根据Python版本选择GUI库?附版本兼容性测试

本文针对Python GUI开发新手,详细对比了PySide6与PyQt6的核心差异,并提供了基于Python 3.8至3.12等不同版本的兼容性实测数据与选择建议。文章重点分析了版本选择策略,帮助开发者根据自身Python环境、项目需求(如与matplotlib集成)及许可证考量,做出最合适的决策,并附有安装验证与避坑指南。

weixin_29094539的博客 702

STM32G0实战:HAL库与LL库Flash操作避坑指南(附HardFault解决方案)

本文深入剖析了STM32G0系列微控制器在Flash操作中常见的HardFault问题,对比了HAL库与LL库在读写擦除操作上的底层差异与潜在陷阱。文章提供了基于寄存器状态分析的精准调试方法,并给出了经过实战检验的解决方案与健壮的代码框架,帮助开发者有效规避数据丢失与系统崩溃风险。

t8u9v0w1x的博客 730

OCR开发实战:如何用PaddleOCR C++版实现本地文字识别(附模型文件处理技巧)

本文详细介绍了如何使用PaddleOCR C++版实现本地文字识别,包括环境搭建、工程编译、运行时优化等全流程。重点讲解了在VS2019/VS2022环境下配置PaddleOCR的CPU推理性能优化技巧,以及模型文件处理的实际应用方法,帮助开发者高效完成OCR本地化部署。

devops8pract的博客 334

5G无线关键技术 — 新型传输波形技术和先进编码与调制技术

目录 1、OFDM传输波形技术 2、滤波器组多载波 (Filterbank multicarrier:FBMC) 3、先进编码与调制技术 4、空间调制(Spatial Modulation SM) 5、频率正交幅度调制 1、OFDM传输波形技术 OFDM是当前Wi-Fi和LTE标准中的高速无线通信的主要传信模式。 LTECP配置 子载波间隔 CP长度Tcp 有用符号长度Tu CP比例..

Fanjufei的博客 2127

ESP32 智能垃圾分类助手:从硬件搭建到代码实现的硬核指南

基于 ESP32 的智能垃圾分类设备,充分利用了 ESP32 的外设兼容性和处理能力,通过简单的模块组合和代码编写,就能实现垃圾分类的智能化。无论是作为学生的物联网课程设计,还是家庭的环保小工具,这个项目都兼具实用性和趣味性。如果你想进一步优化功能,还可以尝试加入更多传感器(如红外传感器检测垃圾满溢),让设备更加智能。

weixin_42300449的博客 928

【Halcon-1D测量】measure_pairs 函数功能(用于提取垂直于矩形/环形弧主轴的直边对)

HALCON算子measure_pairs是1D测量模块的基础工具,专用于提取垂直于矩形/环形弧主轴的直边对。该算子通过振幅阈值和灰度过渡规则(如positive/negative)进行边对分组,支持_strongest后缀选择最强边缘避免误配对。输出包含边缘坐标、振幅及内外间距(IntraDistance/InterDistance)。关键限制包括仅适用于直边、Sigma需≤0.5×测量长度,且忽略图像域。相比模糊版本算子,它更适用于边缘清晰的简单场景(如电子元件间距测量)。典型应用需配合gen_meas

weixin_45590420的博客 303

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 前端常见面试题
下一篇: 如何使用 Next.js 进行服务端渲染(Server-Side Rendering, SSR)
不见浅诗~
博客等级 码龄7年 506粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值