我一直非常关注webassembly的路线图,特别是调用JS互操作的性能影响。作为此引用类型提案的一部分,我们将能够在 Wasm 中对表进行基本操作。第 4 阶段已于 6 月 23 日会议获得批准。Firefox 和 Chrome 正在努力实现该提案 WebAssembly 路线图。铬实现。基于这个答案 Wasm访问dom.并引用铬描述
允许 WebAssembly 模块保存对 JS/DOM 对象的引用,将它们作为参数传递,将它们存储在局部和全局中,并将它们存储在 WebAssembly.Table 对象中。
这是否允许从wasm访问DOM? 或者需要进一步的实现?访问 DOM 是否会提高/匹配 JS 性能?这是否允许在wasm中拥有一个虚拟DOM,并且只在真正的DOM中进行必要的更改?罗斯伯格@Andreas?
添加来自 Andreas Rossberg 的响应 解释 GC 和 DOM 访问的连接
但是,我们从GC提案中分离出来的关于参考类型的新提案试图对此给出更微妙的答案。它引入了引用类型,没有任何功能可以在 Wasm 本身中分配任何内容。在主机引用被垃圾回收的嵌入中,仍然需要 Wasm 实现来理解 GC。但在其他嵌入中,它不需要。
编辑完整性 Web 程序集接口类型
模块可以在 Wasm 中存储对 DOM 对象(或相应主机环境提供的任何内容(的引用,但要访问它们,它需要导入相应的功能。这一点不会改变。Wasm是一个虚拟指令集,而不是一个API。而且它不是特定于 Web 的。
但是,当然,你现在可以在Wasm中实现一个丰富的库,比如影子DOM或虚拟DOM,它在Wasm中完成大部分工作,并且只在需要时调用真正的DOM。