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 mehrereWebAssembly.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 einesModule.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 einWebAssembly.Module-Objekt. WebAssembly.compileStreaming()-
Die
WebAssembly.compileStreaming()-Funktion kompiliert einWebAssembly.Moduledirekt 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 einModuleals auch seine ersteInstancezurück. WebAssembly.validate()-
Die
WebAssembly.validate()-Funktion validiert ein gegebenes typisiertes Array von WebAssembly-Binärcode. WebAssembly.Memory()-
Ein
WebAssembly.Memory-Objekt ist ein skalierbarerArrayBuffer, das die rohen Bytes des Speichers enthält, auf die eineInstancezugreift. WebAssembly.Table()-
Ein
WebAssembly.Table-Objekt ist ein skalierbares typisiertes Array von undurchsichtigen Werten, wie Funktionsreferenzen, auf die eineInstancezugreift. 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
- WASMSobel
- Sehen Sie sich unser webassembly-examples-Repository für eine Reihe weiterer Beispiele an.