Sie können ein Werkzeug wie wabt 's wasm2wast
verwenden, um eine .wasm
Datei in das Äquivalent .wast
zu übersetzen. Das würde tun, was du verlangst.
Sie müssen dies jedoch nicht unbedingt tun! Das JavaScript-API gibt Ihnen meist von dem, was Sie wollen:
let arrayBuffer = ...; // Somehow get your .wasm file into an ArrayBuffer. XHR, from a string, or what have you.
let module = WebAssembly.Module(arrayBuffer); // This is the synchronous API! Only use it for testing/offline things.
let importObject = {};
for (let imp of WebAssembly.Module.imports(module)) {
if (typeof importObject[imp.module] === "undefined")
importObject[imp.module] = {};
switch (imp.kind) {
case "function": importObject[imp.module][imp.name] =() => {}; break;
case "table": importObject[imp.module][imp.name] = new WebAssembly.Table({ initial: ???, maximum: ???, element: "anyfunc" }); break;
case "memory": importObject[imp.module][imp.name] = new WebAssembly.Memory({ initial: ??? }); break;
case "global": importObject[imp.module][imp.name] = 0; break;
}
}
Beachten Sie, dass Tabelle und Speicheranfang/Maximum liegt noch Vermutungen! Ich schlage vor, dass wir add the missing information to the JS API. Ich denke, beim nächsten WebAssembly-Treffen könnte es ein guter Zeitpunkt sein, über eine solche Ergänzung zu sprechen.
netter Ansatz. Ich dachte nicht, dass du das kannst. Vielen Dank! –
Wie der Bug, den ich eingereicht habe, sagt, es ist ein bisschen Mangel noch immer! Wenn jemand in der JavaScript-API zusätzliche Dinge findet, die nicht in der JavaScript-API enthalten sind, dann reichen Sie bitte Programmfehler ein, die Usecase dokumentieren, und wenn Sie kreativ sind, schlagen Sie eine API vor, um zu beheben, was Sie versuchen zu tun. Wenn Leute anfangen, WebAssembly zu verwenden, wird erwartet, dass sie Dinge finden, die wir später übersehen oder mit denen wir konfrontiert werden. –