qiankun 的 JS 沙箱原来这么简单

130 阅读1分钟

沙箱技术(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()
}

image.png

这个大家应该都很熟悉,就是一个简单的闭包。

这里我们把 $q 换成 window,就是一个 qiankun 的沙箱了。

好了到此结束,水一篇。
下一篇写写怎么利用沙箱的特性去动态加载一个 umd