WebAssembly:标准化接口

WebAssembly: Standardized Interfaces

WebAssembly 与外部世界交互的方式非常优雅和安全。添加功能接口很容易,但还没有标准化。

是否已经为 Javascript 环境建立了调用约定(主要用于访问浏览器中的 DOM 或节点中的文件系统)?

尚未创建用于操作 DOM 节点或使用外部 API 的约定,但一些 WebAssembly 提案/未来功能将支持这一点。

第一个是 the reference types proposal,它允许扩展类型系统,添加一个新的 anyref 类型,允许模块保存对宿主环境提供的对象的引用,即你可以传递一个 JS反对你的 wasm 模块。

第二个是 host bindings 提案,它允许 WebAssembly 模块创建、传递、调用和操作 JavaScript / DOM 对象。它添加了一个数字主机绑定部分,其中包括描述应构建的绑定机制/接口的注释。

Rust 已经有了一个工具,wasm-bindgen,它的目的非常相似,并且与这个提议非常一致。使用 wasm-bindgen,您可以轻松地跨 wasm / JS 边界传递字符串等对象。该工具将绑定元数据添加到 wasm 模块中,并生成所需的 JS 胶水代码。