qiankun用到的沙箱方案小记

1.对rawWindow操作的沙箱方案

该方案可在沙箱active期间操作window,但是在deactive阶段必须提供机制确保window还原,期间产生的diff会被记录下来供下一次active使用。关于还原,有两种方案,一种是使用快照,一种是记录update(需要用到proxy)。

1.1 快照沙箱

最简单的一种沙箱。在active时将window打一个windwSnapshot,deactive时用该snapshot还原window。
在这里插入图片描述

1.2 legacy沙箱(proxy)

和快照沙箱的区别在于,将window的原始状态保留在update中(代码中指的是addedPropsMapInSandbox和modifiedPropsOriginalValueMapInSandbox),deactive时根据update来进行window还原。
在这里插入图片描述

2.对fakeWindow操作的沙箱方案

以上方案在沙箱active期间还是会污染window,不适用多例应用场景。以下介绍多例沙箱。

2.1 多例

如图所示,创建fakeWindow,仅对fakeWindow进行写操作,读操作优先级fakeWindow > rawWindow。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值