ブラウザからもNode.jsからも import できるWebAssemblyライブラリを作る
ARANK

WebAssembly というやつは便利で一度コンパイルしてしまえばブラウザでも Node.js でも実行できる。でも .wasm のファイルをどうやって読み込むのか、というのがブラウザと Node.js では違う。色々やり方はあると思うけど、一番素直なやり方を考えてみる。まずブラウザの場合は main.wasm みたいなファイルを適当な場所に配置しておいて fetch で内容を取得して WebAssembly.instantiate に食わせるとかになると思う。const response = await fetch("main.wasm"); const buf = await response.arrayBuffer(); const { instance } = await WebAssembly.instantiate(buf); こんな感じ。で、Node.jsの場合は main.wasm ファイルを fs.readFile とかで読み込んで WebAssembly.instantiate に食わせるとかになると思う。import fs from "node:fs/promises"; const buf = await fs.readFile(new URL("./main.wasm", import.meta.url)); const { instance } = await WebAssembly.instantiate(buf); こんな感じ。WebAssembly にコンパイルした何かを main.wasm として配置し、取得し、インスタンス化する、という流れは両方同じ。で、微妙に読み込み方が違うわけだけど、せっかくど…

zenn.dev
Related Topics: WebAssembly HTML5 Node.js