首先需要安装wasm-pack
cargo install wasm-pack
使用cargo创建工程
cargo new --lib mywasm
编辑Cargo.toml文件,修改lib的类型为cdylib,并且添加依赖wasm-bindgen
[package]
name = "mywasm"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
crate-type = ["cdylib"]
[dependencies]
wasm-bindgen = "0.2"
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn add(n1: usize, n2: usize) -> usize {
n1 + n2
}
编译lib.rs生成wasm
wasm-pack build --target web
下载wasm-bindgen的过程大概需要10分钟,请耐心等待。
接下来创建文件index.html,使用wasm
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>wasm web demo</title>
</head>
<body>
<script type="module">
import init, {add} from "./pkg/mywasm.js";
init().then(() => {
console.log("add(1,2) = " + add(1, 2))
});
</script>
</body>
</html>
启动测试用web server
python3 -m http.server 8000
打开chrome访问http://localhost:8000,并且打开调试控制台,可以看到运行结果。