Warum WASM in JS konvertieren?
Eine .wasm-Binärdatei kann nicht alleine in einer Seite ausgeführt werden - Browser laden sie über JavaScript. Man benötigt eine .js-Datei, um das Modul zu importieren, Importe zu übergeben und seine exportierten Funktionen wie normale Funktionen aufzurufen. Toolchains generieren diesen Glue-Code, sodass man den rohen Lade-Code selten selbst anfassen muss.
Wie man WASM in JS konvertiert
Emscripten Glue-Ausgabe OPEN-SOURCE
Führen Sie beim Kompilieren von C/C++ emcc app.c -o app.js aus, und Emscripten gibt sowohl app.wasm als auch den app.js-Loader aus, der es instanziiert. Fügen Sie -s MODULARIZE=1 für ein importierbares Modul hinzu.
wasm-pack für Rust OPEN-SOURCE
Führen Sie für Rust + wasm-bindgen wasm-pack build --target web aus; es erzeugt die .wasm plus eine .js-Binding-Datei, die jede Funktion re-exportiert. Importieren Sie diese in Ihrer App mit init().
Über diese Formate
Eine .wasm-Datei enthält ein kompiliertem WebAssembly-Modul: portabler binärer Bytecode, der aus Sprachen wie C, C++ oder Rust erzeugt wurde und mit nahezu nativer Geschwindigkeit…
.WASM-Details öffnen →Eine JS-Datei ist eine JavaScript-Quellcodedatei - einfacher, lesbarer Text, der die Interaktivität von Webseiten und serverseitige Anwendungen über Node.js steuert. Öffnen Sie sie in einem…
.JS-Details öffnen →Qualität & worauf zu achten ist
- Die
.js-Datei enthält nicht die Logik des Moduls - sie lädt und überbrückt nur die.wasm, die zusammen mit ihr ausgeliefert werden muss. - Handgeschriebene Loader müssen genau das Import-Objekt liefern, das das Modul erwartet, andernfalls wirft die Instanziierung einen LinkError.
- Emscripten/wasm-bindgen-Glue ist an den exakten Build gebunden, der die
.wasmerzeugt hat; das Mischen von Versionen führt zu Fehlern in den Bindings.
Häufig gestellte Fragen
Kann ich WASM vollständig in lesbares JavaScript zurückverwandeln?
Benötige ich die .wasm-Datei nach der Generierung von .js noch?
.js-Datei ruft die .wasm zur Laufzeit ab und instanziiert sie; beide müssen zusammen bereitgestellt werden.Welches Target-Flag sollte wasm-pack verwenden?
--target web für native ES-Module, --target bundler für webpack/Vite, --target nodejs für Node.