使用 rust 编译 WebAssembly — 环境篇

最近用 rust 编写 wasm,并且在 nodejs 中加载 wasm 处理一些业务需求,但是网上看了下一些教程,感觉相对散乱,这边做个整理,备用。

第一,要安装 rust 和编译 wasm 的环境,主要有 3 个东西

  • rust 工具链(rustup,rustc,cargo)运行 rust 的环境,
  • wasm-pack 一个构建、测试和发布 WASM 的 Rust CLI 工具,这个主要就是把 rust 编译成 wasm 的工具
  • npm、node 这个就是 node 环境了

接下来我们可以使用 wasm-pack 的命令,来进行一个模板的创建,这里我们使用默认的模板。

wasm-pack new myproject

然后就可以使用 IDE 打开这个工程,如果你用 VSCode 你可以去插件商店搜 rust 的插件支持,列如 rust-analyzer

打开后大致是这么一个目录结构

使用 rust 编译 WebAssembly -- 环境篇

这个模板会把默认需要的 crate(rust 的库叫 crate,和 nodejs 的 node_module 类似) 和默认的目录结构设置好,我们可以直接使用命令进行编译,由于我们需要的是 nodejs,所以 target 设置为 nodejs,如果是要打包在 web 上加载页可以设置为 web

wasm-pack build --target nodejs

开始编译会自动下载所依赖的 crate,编译完成会在同级目录生成 pkg 文件夹,这个文件夹就是 npm 的模块,名字默认为配置的工程的名字,里面包含了我们需要的 wasm 文件,声明文件(.d.ts)和一些减少适配的 js 文件,我们在 nodejs 中,直接 require 这个 module 即可

使用 rust 编译 WebAssembly -- 环境篇

到这里,就可以把整个流程跑起来了。后续就是如何在 rust 中填充代码,来实现我们需要的功能了。

如果你对这个行业充满兴趣,那么请关注我,我将为大家分享程序界的各种知识、八卦趣闻等,没有门槛,只要你有兴趣。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容