webassembly使用TS开发教程

关于使用typescript编写 webassembly时的踩坑记录

首先根据官网的教程一步步创建代码,官网链接


创建一个Main.ts文件,代码如下:

declare function sayHello(): void;

sayHello();

export function add(x: i32, y: i32): i32 {
    return x + y;
}


JS调用代码:

WebAssembly.instantiateStreaming(fetch("../out/main.wasm"), {
main: {
    sayHello() {
        console.log("Hello from WebAssembly!");
        }
},


var mem = new WebAssembly.Memory({ initial: 16 * 16 });
//env这段代码一定需要,不然在调用WebAssembly.instantiate(bytes, imports)的时候会报错,说没有abort的函数
env: {
        //如果文件超过4KB,需要设置memory的话,这样设置                   
        memory: mem, //如果没有超过,这句代码可以不需要
        
        abort(_msg, _file, line, column) {
            console.error("abort called at main.ts:" + line + ":" + column);
        }
},
}).then(result => {
    const exports = result.instance.exports;
    document.getElementById("container").textContent = "Result: " + exports.add(19, 23);
}).catch(console.error);


如果是Laya里面调用,就先用二进制格式load好wsam文件,然后用这个方法调用


WebAssembly.instantiate(bytes, imports).then(results => {
         console.log(results);
 });


暂无评论

发布评论

分享:

支付宝

微信