RUST WASM初试
什么是WebAssembly
WebAssembly (wasm) 是一种简单的机器模型和具有 广泛规范的可执行格式。它被设计为便携、紧凑,并以或接近原生速度执行。
WebAssembly 有一个非常简单的内存模型。一个 wasm 模块可以访问一个单一的“线性内存”,它本质上是一个扁平的字节数组。此 内存可以按页面大小 (64K) 的倍数增长。它不能缩小。
尽管它目前在 JavaScript 和 Web 社区中引起了广泛关注,但 wasm 并没有对其宿主环境做出任何假设。因此,推测 wasm 将成为一种“可移植的可执行”格式,在未来的各种环境中使用是有道理的。然而,截至 今天,wasm 主要与 JavaScript (JS) 相关,它有多种风格(包括 Web 和Node.js)。
步骤
安装
- 安装Rust工具链
- 安装wasm-pack
- 安装cargo-generate
- 安装npm(测试用)
参考安装教程
实现
初始化项目
- clone模板项目
cargo generate --git https://github.com/rustwasm/wasm-pack-template
这应该会提示您输入新项目的名称。我们将使用 “wasm-game-of-life”。
生成模板
wasm-game-of-life/
├── Cargo.toml
├── LICENSE_APACHE
├── LICENSE_MIT
├── README.md
└── src
├── lib.rs
└── utils.rs
- 构建项目
wasm-pack build
构建完成后,我们可以在pkg目录中找到它的工件,它应该具有以下内容:
pkg/
├── package.json
├── wasm_game_of_life_bg.wasm
├── wasm_game_of_life.d.ts
└── wasm_game_of_life.js
用网页打开
npm init wasm-app www
这是我们的新wasm-game-of-life/www子目录包含的内容:
wasm-game-of-life/www/
├── bootstrap.js
├── index.html
├── index.js
├── LICENSE-APACHE
├── LICENSE-MIT
├── package.json
├── README.md
└── webpack.config.js
- npm install
进入www文件夹下打开控制台输入
npm i
或
yarn
- 连接文件
在www文件夹下的package.json
里添加
{
// ...
"dependencies": { // Add this three lines block!
"wasm-game-of-life": "file:../pkg"
},
"devDependencies": {
//...
}
}
- 运行
yarn start
一个简单的wasm
项目就完成了
评论