4

我一直在密切关注 webassembly 的路线图,特别是调用 JS interop 的性能影响。作为这个引用类型提案的一部分,我们将能够在 Wasm 中对表进行基本操作。第 4 阶段已在6 月 23 日的会议上获得批准。Firefox 和 Chrome 正在致力于实施这个WebAssembly 路线图提案。铬实施。基于这个答案Wasm access dom。并引用铬描述

允许 WebAssembly 模块保存对 JS/DOM 对象的引用,将它们作为参数传递,将它们存储在局部变量和全局变量中,并将它们存储在 WebAssembly.Table 对象中。

这是否允许从 wasm 访问 DOM?还是需要进一步的实施?会提高/匹配访问 DOM 的 JS 性能吗?这是否允许在 wasm 中拥有一个虚拟 DOM,并且只在真实 DOM 中进行必要的更改?@安德烈亚斯罗斯伯格

添加来自 Andreas Rossberg的回复 解释 GC 和 DOM-Access 的连接

然而,我们从 GC 提案中分离出来的关于引用类型的新提案试图对此给出更细致的回答。它引入了引用类型,但没有任何用于在 Wasm 本身内分配任何内容的功能。在主机引用被垃圾收集的嵌入中,仍然需要 Wasm 实现来理解 GC。但在其他嵌入中则不需要。

编辑完整性webassembly-interface-types

4

1 回答 1

3

模块可以在 Wasm 中存储对 DOM 对象(或相应宿主环境提供的任何内容)的引用,但要访问它们,它需要导入相应的功能。这不会改变。Wasm 是一个虚拟指令集,而不是 API。而且它不是特定于 Web 的。

当然,您现在可以在 Wasm 中实现一个丰富的库,例如影子 DOM 或虚拟 DOM,它们在 Wasm 中完成大部分工作,并且只在需要时调用真实 DOM。

于 2020-06-26T08:16:37.023 回答