我一直在密切关注Web组装路线图,特别是调用JS interop的性能影响。作为此reference types proposal的一部分,我们将能够对Wasm中的表进行基本操作。阶段4已获批准June 23rd meeting。 Firefox和Chrome正在着手实施此提案WebAssembly roadmap。 Chromium implementation。基于此答案Wasm access dom。并引用铬说明
允许WebAssembly模块保存对JS / DOM对象的引用,将其作为参数传递,将其存储在本地和全局变量中,并将其存储在WebAssembly.Table对象中。
这是否允许从wasm访问DOM?还是需要进一步的实现?是否可以提高/匹配访问DOM的JS性能?这是否可以在wasm中拥有虚拟DOM并仅对实际DOM进行必要的更改? @Andreas Rossberg?
添加了Andreas Rossberg Explain the conection of GC and DOM-Access
的回复但是,我们从GC提案中分离出来的关于引用类型的新提案试图对此给出更细微的回答。它引入了引用类型,但没有在Wasm本身中分配任何内容的任何功能。在主机引用被垃圾收集的嵌入中,仍然需要Wasm实现来理解GC。但是在其他嵌入中则不需要。
答案 0 :(得分:3)
模块可以在Wasm中存储对DOM对象(或相应主机环境提供的任何内容)的引用,但是要访问它们,它需要导入相应的功能。那不会改变。 Wasm是一个虚拟指令集,而不是API。而且它不是特定于Web的。
但是,当然,您现在可以在Wasm中实现丰富的库,例如影子DOM或虚拟DOM,它可以在Wasm中完成大部分工作,并且仅在需要时调出真正的DOM。