@stevenleep/wasm-loader
v0.0.9
Published
## 安装 ```bash pnpm add @stevenleep/wasm-loader ```
Readme
@stevenleep/wasm-loader
安装
pnpm add @stevenleep/wasm-loader如果你需要在dokant的其他包中安装wasm-loader作为依赖,你可以使用以下命令:
pnpm add -F <package> @stevenleep/wasm-loader使用
// loadWasm在为未检测到缓存的情况下,默认使用instantiateStreaming加载wasm文件
import { loadWasm } from '@stevenleep/wasm-loader';
/**
* 此案例通过golang构建的wasm文件,使用wasm_exec.js作为wasm的执行环境
* 导入后将会在 Window 对象上挂载 Go 对象, 通过 new Go.run() 方法执行wasm文件
* 也可参考这个仓库案例:https://e.gitee.com/doactionpro/repos/doactionpro/gowasm-simple-demo/blob/main/site/index.html
*
* ##为什么需要这个?
* - 参考:https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/instantiateStreaming_static#importobject
*/
import "./path/to/wasm/wasm_exec";
const loadwasmOption = new globalThis.Go();
const onProgress = (progress: ProgressResult) => {
console.log('progress:', progress);
console.log('progress:', progress.loaded, progress.total);
console.log('progress:', progress.progress, progress.done);
};
const cacheOptions = {
enable: true, // 开启wasm缓存
set(value: Promise<ArrayBuffer>): void {
// 自定义缓存wasm文件的方法
},
// 自定义获取缓存wasm文件的方法
get(): ArrayBuffer | Promise<ArrayBuffer> | null | Promise<null> {},
}
loadWasm('path/to/wasm/file.wasm', loadwasmOption, onProgress, cacheOptions)
.then((result) => {
console.log('wasm loaded:', result);
// result.add(1, 2); // 调用你的wasm函数
})
.catch((error) => {
console.error('wasm load error:', error);
});API
loadWasm(path: string, wasmLoadOption: LoadwasmOption, onProgress?: (progress: number) => void, cacheOptions?: CacheOptions): Promise<WebAssembly.ResultObject>
- path: string wasm文件路径
- wasmLoadOption: LoadwasmOption, wasm加载配置, 包含以下属性, 默认 {}
- importObject?: WebAssembly.Imports;
- run?: Run;
- onProgress: onProgress(progress: ProgressResult): void 加载进度回调函数
- cacheOptions CacheOptions: wasm缓存配置, 包含以下属性, 默认 {}
- enable: boolean; // 是否开启wasm缓存
- set(value: Promise): void; // 自定义缓存wasm文件的方法
- get(): ArrayBuffer | Promise | null | Promise; // 自定义获取缓存wasm文件的方法
