1 个不稳定版本
0.2.87 | 2023 年 9 月 27 日 |
---|
#933 在 WebAssembly 中
185KB
3.5K SLoC
wasm-bindgen
促进 Wasm 模块和 JavaScript 之间的高级交互。
指南 | API 文档 | 贡献 | 聊天
由 🦀🕸 构建,由 Rust 和 WebAssembly 工作组 提供。
安装 wasm-bindgen-cli
您可以使用 cargo install
cargo install wasm-bindgen-cli
或者,您可以从中下载它 发布页面。
如果您已安装 cargo-binstall
,则可以运行以下命令来安装预构建的工件:
cargo binstall wasm-bindgen-cli
示例
将 JavaScript 事物导入 Rust 并将 Rust 事物导出到 JavaScript。
use wasm_bindgen::prelude::*;
// Import the `window.alert` function from the Web.
#[wasm_bindgen]
extern "C" {
fn alert(s: &str);
}
// Export a `greet` function from Rust to JavaScript, that alerts a
// hello message.
#[wasm_bindgen]
pub fn greet(name: &str) {
alert(&format!("Hello, {}!", name));
}
使用 ECMAScript 模块在 JavaScript 中使用导出的 Rust 事物!
import { greet } from "./hello_world";
greet("World!");
功能
-
轻量级。 只为你使用的功能付费。
wasm-bindgen
只为实际使用的 JavaScript 导入和导出的 Rust 功能生成绑定和胶水。例如,导入和使用document.querySelector
方法不会导致Node.prototype.appendChild
或window.alert
也包含在绑定中。 -
ECMAScript 模块。 就像导入 JavaScript 模块一样导入 WebAssembly 模块。未来兼容 WebAssembly 模块和 ECMAScript 模块集成。
-
设计考虑了 "Web IDL 绑定" 提案。 最终,Rust 生成的 wasm 函数和原生 DOM 方法之间不会有任何 JavaScript 衬板。因为 wasm 函数是静态类型检查的,因此一些原生方法的动态类型检查应该变得不必要,这有望解锁比 JavaScript 更快的 DOM 访问。
指南
您可以在 此处 找到有关使用 Rust 和 WebAssembly 一起使用的通用文档。
API 文档
许可
本项目受以下任一许可协议的许可:
- Apache 许可证 2.0 版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
供您选择。
贡献
有关在 wasm-bindgen
上进行黑客攻击的信息,请参阅指南中的 "贡献" 部分!
除非您明确声明,否则您提交给本项目的任何贡献(根据 Apache-2.0 许可证定义),均将根据上述条款双许可,不附加任何其他条款或条件。
依赖关系
~0.7–1.5MB
~31K SLoC