Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

WebAssembly

WebAssembly ist eine Art von Code, der in modernen Webbrowsern ausgeführt werden kann. Es handelt sich um eine niedrigstufige, assemblierungsähnliche Sprache mit einem kompakten Binärformat, das nahezu native Leistung erbringt und Sprachen wie C/C++, C# und Rust ein Kompilationsziel bietet, damit sie im Web ausgeführt werden können.

WebAssembly ist so konzipiert, dass es JavaScript ergänzt und neben ihm läuft — mithilfe der WebAssembly JavaScript-APIs können Sie WebAssembly-Module in eine JavaScript-Anwendung laden und Funktionalität zwischen den beiden teilen. Dadurch können Sie die Leistung und Stärke von WebAssembly und die Ausdruckskraft und Flexibilität von JavaScript in derselben App nutzen, selbst wenn Sie nicht wissen, wie man WebAssembly-Code schreibt.

WebAssembly bietet eine Möglichkeit, Code, der in mehreren Sprachen geschrieben wurde, im Web mit nahezu nativer Geschwindigkeit auszuführen, und es ermöglicht Client-Anwendungen, im Web zu laufen, die zuvor nicht ausgeführt werden konnten.

Leitfäden

Die WebAssembly-Leitfäden behandeln Themen wie hochrangige Konzepte, das Kompilieren aus verschiedenen Sprachen, die textuelle Darstellung des Wasm-Binärformats und wie man WebAssembly ausführt.

WebAssembly-Konzepte

Starten Sie mit dem Lesen der hochrangigen Konzepte von WebAssembly — was es ist, warum es so nützlich ist, wie es in die Webplattform (und darüber hinaus) passt, und wie man es benutzt.

Ein neues C/C++-Modul in WebAssembly kompilieren

Wenn Sie Code in C/C++ geschrieben haben, können Sie ihn dann mit einem Tool wie Emscripten in Wasm kompilieren. Lassen Sie uns schauen, wie es funktioniert.

Ein bestehendes C-Modul in WebAssembly kompilieren

Ein Hauptanwendungsfall für WebAssembly ist, das bestehende Ökosystem von C-Bibliotheken zu nutzen und Entwicklern zu ermöglichen, sie im Web zu verwenden.

Von Rust nach WebAssembly kompilieren

Wenn Sie Rust-Code geschrieben haben, können Sie ihn in WebAssembly kompilieren! Diese Anleitung führt Sie durch alles, was Sie wissen müssen, um ein Rust-Projekt in Wasm zu kompilieren und in einer bestehenden Webanwendung zu verwenden.

WebAssembly-Code laden und ausführen

Nachdem Sie ein Wasm-Modul haben, deckt dieser Artikel ab, wie man es abruft, kompiliert und instanziiert, indem die WebAssembly JavaScript API mit den Fetch oder XHR APIs kombiniert wird.

Die WebAssembly JavaScript API verwenden

Sobald Sie ein Wasm-Modul geladen haben, werden Sie es verwenden wollen. In diesem Artikel zeigen wir Ihnen, wie man WebAssembly über die WebAssembly JavaScript API verwendet.

Exportierte WebAssembly-Funktionen

Exportierte WebAssembly-Funktionen sind die JavaScript-Widerspiegelungen von WebAssembly-Funktionen, die es ermöglichen, WebAssembly-Code von JavaScript aufzurufen. Dieser Artikel beschreibt, was sie sind.

Das WebAssembly-Textformat verstehen

Dieser Artikel erklärt das Wasm-Textformat. Dies ist die niedrigstufige textuelle Darstellung eines Wasm-Moduls, die beim Debuggen in den Entwickler-Tools des Browsers angezeigt wird.

WebAssembly-Textformat in Wasm umwandeln

Dieser Artikel bietet eine Anleitung, wie man ein WebAssembly-Modul, das im Textformat geschrieben ist, in ein Wasm-Binärformat umwandelt.

API-Referenz

WebAssembly-Anweisungsreferenz

Referenzdokumentation mit interaktiven Beispielen für die Menge der WebAssembly-Operatoren.

WebAssembly-JavaScript-Schnittstelle

Dieses Objekt fungiert als Namensraum für alle mit WebAssembly verbundenen Funktionalitäten.

WebAssembly.Global()

Ein WebAssembly.Global-Objekt stellt eine globale Variableninstanz dar, die sowohl von JavaScript aus zugänglich als auch über eine oder mehrere WebAssembly.Module-Instanzen importierbar/exportierbar ist. Dies ermöglicht das dynamische Verknüpfen mehrerer Module.

WebAssembly.Module()

Ein WebAssembly.Module-Objekt enthält zustandslosen WebAssembly-Code, der bereits vom Browser kompiliert wurde und effizient mit Workern geteilt werden und mehrfach instanziiert werden kann.

WebAssembly.Instance()

Ein WebAssembly.Instance-Objekt ist eine zustandsbehaftete, ausführbare Instanz eines Module. Instance-Objekte enthalten alle exportierten WebAssembly-Funktionen, die es ermöglichen, von JavaScript aus auf WebAssembly-Code zuzugreifen.

WebAssembly.compile()

Die WebAssembly.compile()-Funktion kompiliert WebAssembly-Binärcode in ein WebAssembly.Module-Objekt.

WebAssembly.compileStreaming()

Die WebAssembly.compileStreaming()-Funktion kompiliert ein WebAssembly.Module direkt aus einer gestreamten zugrunde liegenden Quelle.

WebAssembly.instantiate()

Die WebAssembly.instantiate()-Funktion ermöglicht das Kompilieren und Instanziieren von WebAssembly-Code.

WebAssembly.instantiateStreaming()

Die WebAssembly.instantiateStreaming()-Funktion ist die primäre API zum Kompilieren und Instanziieren von WebAssembly-Code und gibt sowohl ein Module als auch seine erste Instance zurück.

WebAssembly.validate()

Die WebAssembly.validate()-Funktion validiert ein gegebenes typisiertes Array von WebAssembly-Binärcode.

WebAssembly.Memory()

Ein WebAssembly.Memory-Objekt ist ein skalierbarer ArrayBuffer, das die rohen Bytes des Speichers enthält, auf die eine Instance zugreift.

WebAssembly.Table()

Ein WebAssembly.Table-Objekt ist ein skalierbares typisiertes Array von undurchsichtigen Werten, wie Funktionsreferenzen, auf die eine Instance zugreift.

WebAssembly.Tag()

Das WebAssembly.Tag-Objekt definiert einen Typ von WebAssembly-Ausnahme, der von/zur WebAssembly-Code geworfen werden kann.

WebAssembly.Exception()

Das WebAssembly.Exception-Objekt repräsentiert eine Laufzeitausnahme, die von WebAssembly nach JavaScript geworfen wird oder von JavaScript zu einem WebAssembly-Ausnahmehandler.

WebAssembly.CompileError()

Erzeugt ein neues WebAssembly CompileError-Objekt.

WebAssembly.LinkError()

Erzeugt ein neues WebAssembly LinkError-Objekt.

WebAssembly.RuntimeError()

Erzeugt ein neues WebAssembly RuntimeError-Objekt.

Beispielprojekte

Spezifikationen

Spezifikation
WebAssembly JavaScript Interface
# webassembly-namespace
WebAssembly JavaScript Interface
# ref-for-syntax-numtype①⓪
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
WebAssembly Core: Garbage Collection
# garbage-collection①

Browser-Kompatibilität

webassembly.api

webassembly.BigInt-to-i64-integration

webassembly.bulk-memory-operations

webassembly.exception-handling

webassembly.extended-constant-expressions

webassembly.fixed-width-SIMD

webassembly.garbage-collection

webassembly.multiMemory

webassembly.multi-value

webassembly.non-trapping-float-to-int-conversions

webassembly.reference-types

webassembly.sign-extension-operations

webassembly.tail-calls

webassembly.threads-and-atomics

Siehe auch