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项目就完成了

参考

评论

0 / 800
全部评论()