- 无界利用iframe和ShadowRoot来搭建天然的js隔离沙箱和css隔离沙箱
- 利用iframe的history和主应用的history在同一个top-level browsing context来搭建天然的路由同步机制
- 副作用局限在沙箱内部,子应用切换无需任何清理工作,没有额外的切换成本
- 子应用执行性能和原生一致,子应用实例instance运行在iframe的window上下文中,避免with(proxyWindow){code}这样指定代码执行上下文导致的性能下降,但是多了实例化iframe的一次性的开销,可以通过proloadApp提前实例化
- 包体积只有11kb,非常轻量,借助iframe和ShadowRoot来实现沙箱,极大的减小了代码量
- 内存占用较高,为了降低子应用的白屏时间,将未激活子应用的shadowRoot和iframe常驻内存并且保活模式下每张页面都需要独占一个wujie实例,内存开销较大
- 兼容性一般,目前用到了浏览器的shadowRoot和proxy能力,并且没有做降级方案
- iframe劫持document到shadowRoot时,某些第三方库可能无法兼容导致穿透
【前端开发干货:让 iframe 焕发新生开发】
推荐阅读
- 前端新手必备常用JavaScript方法函数大全
- 彻底搞懂字符编码
- java开发之Java ORM 框架推荐
- Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架
- Android开发:当前项目以Module形式引用别的项目的步骤
- 有哪些不同的CSS前端框架可供选择?
- 专门针对chrome谷歌浏览器而开发的一款访问插件
- 纯前端生成设置头像 - 基于Vue3、Ts、Vite
- 前端规范整理
- 一文看懂"async"和“await”关键词是如何简化了C#中多线程的开发过程