JS 最让我烦恼的限制之一是隔离代码执行的能力很差。
我希望能够控制执行代码的上下文,与 node.js 中的Script.createContext
&实现类似效果的东西Script.runInContext
(节点正在使用绑定到 V8 引擎,所以我无法模拟它们的实现)。
这是我想隔离代码执行的一些原因:
- 将代码与全局命名空间(
window
对象和DOM
)隔离,但是我需要能够对上下文中公开的对象引用函数调用,这些对象必须同步执行,这使得使用 aWebWorker
进行隔离几乎不可能。 - 通过隔离代码的执行,还可以在不再需要时释放其定义(内存管理)。
我知道可以通过将脚本加载到iframe
.
我需要共享构造函数定义以及在隔离容器/上下文之间共享的对象定义,它们都必须在主 UI 线程上运行。主要是我想使用这些隔离的容器来托管插件/模块(迷你应用程序),每个插件/模块都通过在自己的Context2D
对象上调用绘图命令来呈现和动态更新视口。
如果这些容器没有在主 UI 线程上运行,那么代理调用将非常困难,ctx.measureText()
因为ctx.drawImage()
图像对象无法在Worker
.
有人知道未来的规范会使这成为可能吗?
是否有任何当前(隐藏的)浏览器端 API 可用于实现此目的?
使用像 Goggle 的 Dart VM 这样的虚拟机并重新实现我当前的代码库会更好吗? 我目前的代码库略高于 20 000 行代码。
在 * 中重新实现框架会更好吗