# wasm-module # wasm-bindgen # js # javascript # interaction # import # alert

无需 std ic-wasm-bindgen

简化 JS 和 Rust 之间的交互支持

1 个不稳定版本

0.2.87 2023 年 9 月 27 日

#933WebAssembly

MIT/Apache

185KB
3.5K SLoC

wasm-bindgen

促进 Wasm 模块和 JavaScript 之间的高级交互。

Build Status Crates.io version Download docs.rs docs

指南 | 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.appendChildwindow.alert 也包含在绑定中。

  • ECMAScript 模块。 就像导入 JavaScript 模块一样导入 WebAssembly 模块。未来兼容 WebAssembly 模块和 ECMAScript 模块集成

  • 设计考虑了 "Web IDL 绑定" 提案 最终,Rust 生成的 wasm 函数和原生 DOM 方法之间不会有任何 JavaScript 衬板。因为 wasm 函数是静态类型检查的,因此一些原生方法的动态类型检查应该变得不必要,这有望解锁比 JavaScript 更快的 DOM 访问。

指南

📚 在这里阅读 wasm-bindgen 指南!📚

您可以在 此处 找到有关使用 Rust 和 WebAssembly 一起使用的通用文档。

API 文档

许可

本项目受以下任一许可协议的许可:

供您选择。

贡献

有关在 wasm-bindgen 上进行黑客攻击的信息,请参阅指南中的 "贡献" 部分!

除非您明确声明,否则您提交给本项目的任何贡献(根据 Apache-2.0 许可证定义),均将根据上述条款双许可,不附加任何其他条款或条件。

依赖关系

~0.7–1.5MB
~31K SLoC