WebAssembly 的 DOM 支持:胶水代码的未来

2025-07-23

WebAssembly (Wasm) 旨在与 JavaScript 严格分离,但如何与 DOM 交互一直是讨论焦点。文章指出,Wasm 不需要直接访问 DOM,现有的 JavaScript API 和编译器生成的胶水代码即可实现无缝集成。虽然未来可能添加直接调用 Web API 的机制,但这需要巨大努力。目前,Wasm 通过导入 JavaScript 函数,例如 `console.log`,以及巧妙地利用 JavaScript 对象数组索引来管理对象引用,实现了与 JavaScript 的灵活交互。这种方式虽然并非纯粹的 Wasm,但有效地提升了性能,并通过不断完善异常处理、阻塞 I/O 和垃圾回收等功能,逐步优化了 Wasm 与 JavaScript 的集成效率。最终,作者认为 Wasm 的重点在于提高程序性能,而不是完全避免 JavaScript,未来 WebAssembly 的发展方向是通过组件模型和工具链的改进,在不牺牲性能和代码大小的情况下,进一步优化与 JavaScript 的互操作性。

开发