Hvorfor konvertere WASM til JS?
En .wasm-binærfil kan ikke køre på en side alene - browsere indlæser den via JavaScript. Folk ønsker en .js-fil, så de kan importere modulet, sende imports og kalde dets eksporterede funktioner som normale funktioner. Toolchains genererer denne glue, så du sjældent rører den rå indlæsningskode.
Sådan konverterer du WASM til JS
Emscripten glue output OPEN-SOURCE
Når du kompilerer C/C++, kør emcc app.c -o app.js, og Emscripten genererer både app.wasm og den app.js-loader, der instantierer den. Tilføj -s MODULARIZE=1 for et importérbart modul.
wasm-pack til Rust OPEN-SOURCE
For Rust + wasm-bindgen, kør wasm-pack build --target web; det producerer .wasm plus en .js-bindingsfil, der re-eksporterer hver funktion. Importér den fra din app med init().
Om disse formater
En .wasm-fil indeholder et kompileret WebAssembly-modul: portabel binær bytecode produceret fra sprog som C, C++ eller Rust, der kører med næsten indfødt (native) hastighed. De fleste…
Åbn .WASM detaljer →En JS-fil er en JavaScript-kildekodefil - almindelig, læsbar tekst, der driver interaktivitet på websider og server-side apps via Node.js. Åbn den i enhver kodeeditor som VS Code eller…
Åbn .JS detaljer →Kvalitet & hvad man skal være opmærksom på
.js-filen indeholder ikke modulets logik - den indlæser og bygger bro til.wasm-filen, som skal leveres sammen med den.- Håndskrevne loadere skal levere det nøjagtige imports-objekt, som modulet forventer, ellers kaster instantieringen en LinkError.
- Emscripten/wasm-bindgen glue er bundet til den nøjagtige build, der producerede
.wasm-filen; blanding af versioner ødelægger bindingerne.
Ofte stillede spørgsmål
Kan jeg forvandle WASM helt tilbage til læsbar JavaScript?
Har jeg stadig brug for .wasm-filen efter at have genereret .js?
.js-filen henter og instantierer .wasm ved kørsel; begge skal distribueres sammen.Hvilket target-flag skal wasm-pack bruge?
--target web for indfødte ES-moduler, --target bundler for webpack/Vite, --target nodejs for Node.