WebAssembly.Module.customSections()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.
Die statische Methode WebAssembly.Module.customSections()
gibt eine Kopie
der Inhalte aller benutzerdefinierten Abschnitte im angegebenen Modul mit dem angegebenen Zeichenfolkennamen zurück.
Syntax
WebAssembly.Module.customSections(module, sectionName)
Parameter
module
-
Das
WebAssembly.Module
-Objekt, dessen benutzerdefinierte Abschnitte betrachtet werden. sectionName
-
Der Zeichenfolgenname des gewünschten benutzerdefinierten Abschnitts.
Rückgabewert
Ein (möglicherweise leeres) Array, das ArrayBuffer
-Kopien der Inhalte aller benutzerdefinierten Abschnitte enthält, die sectionName
entsprechen.
Ausnahmen
Wenn module
keine Instanz eines WebAssembly.Module
-Objekts ist, wird ein
TypeError
ausgelöst.
Beschreibung
Ein Wasm-Modul besteht aus einer Sequenz von Abschnitten. Die meisten dieser Abschnitte sind durch die Wasm-Spezifikation vollständig spezifiziert und validiert, aber Module können auch benutzerdefinierte Abschnitte enthalten, die während der Validierung ignoriert und übersprungen werden. (Lesen Sie High level structure für Informationen über Abschnittsstrukturen und wie normale Abschnitte ("bekannte Abschnitte") und benutzerdefinierte Abschnitte unterschieden werden.)
Dies bietet Entwicklern eine Möglichkeit, benutzerdefinierte Daten innerhalb von Wasm-Modulen für andere Zwecke einzubinden, beispielsweise den namenbenutzerdefinierten Abschnitt, der es Entwicklern ermöglicht, Namen für alle Funktionen und lokalen Variablen im Modul bereitzustellen (ähnlich wie "Symbole" in einem nativen Build).
Beachten Sie, dass das WebAssembly-Textformat derzeit keine spezifizierte Syntax für
das Hinzufügen neuer benutzerdefinierter Abschnitte hat; Sie können jedoch einen Namensabschnitt zu Ihrem Wasm beim
Überführen vom Textformat in Wasm hinzufügen. Der wast2wasm
-Befehl, verfügbar als Teil des
wabt-Tools, hat eine
--debug-names
-Option — geben Sie dies während der Umwandlung an, um ein Wasm mit einem
namenbenutzerdefinierten Abschnitt zu erhalten, beispielsweise:
wast2wasm simple-name-section.was -o simple-name-section.wasm --debug-names
Beispiele
Verwendung von customSections
Das folgende Beispiel verwendet WebAssembly.Module.customSections
, um zu überprüfen,
ob eine geladene Modulinstanz einen "namens" benutzerdefinierten Abschnitt enthält. Ein Modul enthält einen "namens" benutzerdefinierten Abschnitt, wenn WebAssembly.Module.customSections
einen ArrayBuffer
mit einer Länge größer als 0 zurückgibt.
Siehe den Quellcode source code und live example.
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]);
}
});
Spezifikationen
Specification |
---|
WebAssembly JavaScript Interface # dom-module-customsections |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- WebAssembly Übersichtsseite
- WebAssembly-Konzepte
- Verwendung der WebAssembly-JavaScript-API