沙箱技术(Sandboxing)是一种用于隔离正在运行程序的安全机制,其目的是限制不可信进程或不可信代码运行时的访问权限。
先来一个简单的应用题:
// 使下面的代码正常工作
const logBody = () => {
console.log($q('body')) // 输出 document.body
}
很简单对不对,我们只需要赋值 $q = document.querySelector 即可。
如果我希望 logBody 这个函数可以在特定的情况下执行,但是又不想污染全局作用域怎么办呢?
我可以这么写对吧:
const safeLogBody = ($q = document.querySelector.bind(document)) => {
const logBody = () => {
console.log($q('body'))
}
// 这里就创建了一个沙箱环境,使得 $q 可以访问。并且不会污染全局作用域。
logBody()
}
function test () {
safeLogBody()
}
这个大家应该都很熟悉,就是一个简单的闭包。
这里我们把 $q 换成 window,就是一个 qiankun 的沙箱了。
好了到此结束,水一篇。
下一篇写写怎么利用沙箱的特性去动态加载一个 umd