使用vite webassembly 功能简化tinygo webassembly 初始化

vite 对于webassembly 的加载支持url 模式以及init 模式,init 模式可以自动帮助我们生成wasm文件加载的处理代码
比较方便,可以用来替换自己编写的工具类,以下是一个参考使用

参考使用

  • index.js
 
import init from './main.wasm?init'
 
const go = new Go(); // Defined in wasm_exec.js. Don't forget to add this in your index.html.
 
const runWasmAdd = async () => {
  // Get the importObject from the go instance.
  const importObject = go.importObject;
 
  // Instantiate our wasm module, 同时可以传递依赖的importObject
  const wasmModule = await init(importObject);
 
  console.log(wasmModule)
  // Allow the wasm_exec go instance, bootstrap and execute our wasm module
  go.run(wasmModule);
 
  // Call the Add function export from wasm, save the result
  const addResult = wasmModule.exports.add(2433, 24);
 
  const printName = wasmModule.exports.printName();
  // Set the result onto the body
  document.body.textContent = `Hello World! addResult: ${addResult} -- printName: ${printName}`;
};
runWasmAdd();

说明

完整代码已经放到github 了,可以参考

参考资料

https://vitejs.dev/guide/features.html#webassembly
https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/instantiate
https://github.com/rongfengliang/tinygo-wasm-learning/blob/v2/index.js

posted on   荣锋亮  阅读(166)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2022-11-01 backstage 面向开发者门户框架再次简单试用
2022-11-01 graylog 索引数据查询处理简单说明
2022-11-01 新版本nexus minio 集成测试
2020-11-01 duckdb 嵌入式的olap数据库
2020-11-01 trivy 容器安全扫描工具
2020-11-01 Materialize under the Hood
2020-11-01 materialize 参考架构

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示