Binaryen - инфраструктура компилятора для WebAssembly - имеет официальный порт JavaScript / WebAssembly, который можно использовать с JavaScript, в том числе в браузере: https://www.npmjs.com/package/binaryen.
Вот как вы можете использовать его для анализа WAT, создания двоичного файла и создания из него модуля:
var binaryen = require("binaryen");
// Create a module from a WebAssembly Text format
var myModule = binaryen.parseText(`(module
(type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
(export "add" (func $add))
(func $add (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
(i32.add
(local.get $0)
(local.get $1)
)
)
)`);
// Emit module in a binary format
var wasmData = myModule.emitBinary();
// Use WebAssembly API to instantiate a compiled module
var compiled = new WebAssembly.Module(wasmData);
var instance = new WebAssembly.Instance(compiled, {});
// And use it
console.log(instance.exports.add(41, 1));
Обратите внимание, что в этом конкретном примере используется require(...)
таргетинг Node.js, но это должно быть достаточно просто перенести его в браузер, используя пакет или включив скрипт на странице, указывающей на версию Binaryen на стороне клиента, из одного из CDN с использованием ссылок в документах .