小编Raw*_*den的帖子

隔离JavaScript的执行

JS最让我感到困扰的一个限制是隔离代码执行能力差.

我希望能够控制执行代码的上下文,实现Script.createContextScript.runInContextnode.js中的内容类似的效果(节点使用绑定到V8引擎,因此我无法模拟它们的实现).

以下是我想隔离代码执行的一些原因:

  1. 将代码与全局命名空间(window对象及其中DOM)隔离开来,但是我需要能够在上下文中公开的对象上引用函数调用,这些对象必须同步执行,这使得使用WebWorker隔离几乎不可能.
  2. 通过隔离代码的执行,还可以在不再需要时释放其定义(内存管理).

我知道可以通过将脚本加载到a中来实现部分隔离执行,iframe但是这种方法非常繁重,并且为DOM的第二个实例使用了大量内存,这对于我正在尝试的操作是不需要的.

我需要共享构造函数定义以及在必须在主UI线程上运行的隔离容器/上下文之间共享的对象定义.主要是我想使用这些隔离的容器来托管插件/模块(迷你应用程序),每个插件/模块通过在自己的Context2D对象上调用绘图命令来呈现和动态更新视口.

如果这些容器没有在主UI线程上运行,那么代理调用就会非常困难,ctx.measureText()并且ctx.drawImage()由于无法在a中创建图像对象,所以这些都是无用的Worker.

有人知道未来的规范会使这成为可能吗?

是否有任何当前(隐藏的)浏览器端API可用于实现此目的?

是否可以更好地利用像Goggle的Dart VM这样的虚拟机并重新实现我当前的代码库? 我目前的代码库略高于20 000行代码.

在*中重新实施框架会更好吗?

javascript plugins module isolation

13
推荐指数
1
解决办法
3617
查看次数

标签 统计

isolation ×1

javascript ×1

module ×1

plugins ×1