什么是 JS 沙箱


既然是沙箱,就要保证隔离性和安全性,防止恶意注入代码导致系统底层的一些能力被恶意使用(比如修改磁盘信息)。

JS Sandbox 目的是为了隔离各种 JS 执行环境。比如说浏览器不同的网页,就是不同的每个网页就是不同的 JS 执行环境 / 进程,在浏览器中打开一个网页同样也新启动了一个 JS 进程。这样的话,网页 web 代码内容必须通过 IPC 通道才能与浏览器内核进程通信。

客户端使用沙箱的场景:

  1. 实现微前端框架
  2. 在线代码编辑器编写的脚本(code sandbox)
  3. 小程序底层实现
  4. ...

服务端使用沙箱场景:

  1. 一些服务端渲染场景(nuxt)
  2. ...

微前端对 JS Sandbox 的一些要求


这里我们主要着手解决多实例的需求:

  1. 独立宿主全局变量
  2. 和其他沙箱共享的变量
  3. 沙箱间通信能力

封装子环境全局变量