Assembly
2023年12月18日
一、认识
Vite
对于 .wasm
文件也提供了开箱即用的支持
二、语法
2.1 创建 .wasm 文件
Vite
对于 .wasm
文件也提供了开箱即用的支持,我们拿一个斐波拉契的 .wasm
文件(原文件已经放到Github 仓库中)来进行一下实际操作,对应的 JavaScript
原文件如下:
export function fib(n) {
var a = 0,
b = 1;
if (n > 0) {
while (--n) {
let t = a + b;
a = b;
b = t;
}
return b;
}
return a;
}
2.2 导入 .wasm 文件
// Header/index.tsx
import init from './fib.wasm?init';
type FibFunc = (num: number) => number;
init({}).then((instance) => {
const fibFunc = instance.exports.fib as FibFunc;
console.log('Fib result:', fibFunc(10));
});
Vite
会对.wasm
文件的内容进行封装,默认导出为 init
函数,这个函数返回一个 Promise
,因此我们可以在其 then
方法中拿到其导出的成员——fib
方法。
2.3 测试 wasm 效果
回到浏览器,我们可以查看到计算结果,说明 .wasm
文件已经被成功执行: