微前端
Youky ... 2022-10-16 About 1 min
# 微前端
# 微前端和iframe的优劣对比
优势:
- 更好的性能:可以按需加载子应用,而
iframe
每次加载都会创建新的进程。 - 更好的用户体验:切换时不会重新加载整个页面
- 更方便的开发体验: 子应用间可以共享
localStorage
、sessionStorage
- SEO友好
劣势:
- 子应用间的上下文隔离不彻底
- 迁移成本高,需要额外的适配
- 技术栈受限
# qiankun的沙箱隔离机制
# 样式隔离
- 动态样式隔离:qiankun 运行时会拦截子应用的
style
和link
标签,并在子应用挂载时动态添加,在卸载时移除 Shadow DOM
:通过Shadow DOM
创建一个独立的 DOM 作用域,使子应用的 CSS 仅作用于自己的 DOM 结构
Shadow DOM
未默认开启,动态样式隔离不能完全解决样式污染,因此默认情况下,是存在样式污染的问题的
# JS 沙箱
沙箱模式:
- Proxy沙箱:通过Proxy代理
window
,子应用的所有全局变量只能作用于自己的作用域 - 快照沙箱: 在切换子应用时,
qiankun
会保存当前全局变量的状态,然后在子应用卸载后恢复之前的全局状态
快照沙箱用于不支持Proxy的低版本浏览器,由于不是实时隔离,仍有变量污染的风险