手动设置

⚠️ 这不是开始 wasm-pack 项目的推荐方法!如果您不小心来到这里,请查看我们的 推荐项目启动

步骤 1:创建一个新的 Rust 库项目

您可以使用此命令创建一个名为 my-lib 的新 Rust 项目。

cargo new --lib my-lib

--lib 标志指定该项目是一个库,这很重要,因为我们将从 JavaScript 调用此代码。

步骤 2:编辑您的 Cargo.toml 文件

添加 wasm-bindgen 依赖项

您需要在 Cargo.toml 的依赖项部分添加 wasm-bindgenwasm-bindgen 是一个工具,它促进 wasm 模块和 JavaScript 之间的互操作性。

⚠️ 如果您来自 JavaScript,您可能会注意到,当我们添加依赖项时,没有 ^~ 符号 - 看起来我们正在锁定到 0.2 版本。但是,情况并非如此!在 Rust 中,^ 是隐含的。

添加 crate-type

接下来,添加一个 [lib] 部分,其中包含一个名为 crate-type 的新字段,设置为 "cdylib"。这指定库是一个与 C 兼容的动态库,这有助于 cargo 在针对 wasm32 时将正确的标志传递给 Rust 编译器。

完成这些更改后,您的 Cargo.toml 文件应如下所示

[package]
name = "hello-wasm"
version = "0.1.0"
authors = ["Ashley Williams <[email protected]>"]
description = "babby's first wasm package"
license = "MIT OR Apache-2.0"
repository = "https://github.com/ashleygwilliams/hello-wasm"

[lib]
crate-type = ["cdylib"]

[dependencies]
wasm-bindgen="0.2"

步骤 3:编写一些 Rust 代码!

现在您的箱子已在 Cargo.toml 文件中正确配置,设置项目的最后一步是在 src/lib.rs 文件中添加一些 Rust 代码。

浏览器示例

我们提供的模板为您提供了一个快速“Hello, World”项目,用于编译成可以在浏览器中使用的 WebAssembly 库


# #![allow(unused_variables)]
#fn main() {
extern crate wasm_bindgen;

use wasm_bindgen::prelude::*;

#[wasm_bindgen]
extern {
    fn alert(s: &str);
}

#[wasm_bindgen]
pub fn greet() {
    alert("Hello, World!");
}
#}

就是这样!我们将在 模板深入 中讨论此代码的作用,您现在已经为它做好了准备。祝您 wasm-pack 快乐!