WebAssembly.Module.customSections()
WebAssembly.Module.customSections()
静态方法返回给定模块中具有给定字符串名称的所有自定义节内容的副本。
语法
WebAssembly.Module.customSections(module, sectionName)
参数
模块
-
正在考虑其自定义节的
WebAssembly.Module
对象。 sectionName
-
所需自定义节的字符串名称。
返回值
一个(可能为空)数组,其中包含所有匹配 sectionName
的自定义节内容的 ArrayBuffer
副本。
异常
如果 module
不是 WebAssembly.Module
对象实例,则会抛出 TypeError
。
描述
Wasm 模块由一系列节组成。其中大多数节由 Wasm 规范完全指定和验证,但模块也可以包含自定义节,这些节在验证过程中会被忽略和跳过。(阅读 High level structure 以获取有关节结构的信息,以及普通节(“已知节”)和自定义节是如何区分的。)
这为开发人员提供了一种将自定义数据包含在 Wasm 模块中的方法,以用于其他目的,例如 name custom section,它允许开发人员为模块中的所有函数和局部变量提供名称(类似于原生构建中的“符号”)。
请注意,WebAssembly 文本格式目前没有指定用于添加新自定义节的语法;但是,您可以在从文本格式转换为 Wasm 的过程中将名称节添加到您的 Wasm 中。wast2wasm
命令(作为 wabt tool 的一部分提供)有一个 --debug-names
选项 — 在转换过程中指定此选项以获得包含名称自定义节的 Wasm,例如:
wast2wasm simple-name-section.was -o simple-name-section.wasm --debug-names
示例
使用 customSections
以下示例使用 WebAssembly.Module.customSections
来检查加载的模块实例是否包含“name”自定义节。如果 WebAssembly.Module.customSections
返回的 ArrayBuffer
长度大于 0,则该模块包含“name”自定义节。
请参阅 custom-section.html 的 源代码和 实时示例。
WebAssembly.compileStreaming(fetch("simple-name-section.wasm")).then((mod) => {
const nameSections = WebAssembly.Module.customSections(mod, "name");
if (nameSections.length !== 0) {
console.log("Module contains a name section");
console.log(nameSections[0]);
}
});
规范
规范 |
---|
WebAssembly JavaScript 接口 # dom-module-customsections |
浏览器兼容性
加载中…