94个版本

0.2.93 2024年8月12日
0.2.92 2024年3月4日
0.2.91 2024年2月6日
0.2.89 2023年11月27日
0.1.0 2018年3月6日

#19 in WebAssembly

Download history 1056797/week @ 2024-05-03 1085851/week @ 2024-05-10 1104453/week @ 2024-05-17 1062150/week @ 2024-05-24 1192533/week @ 2024-05-31 1167357/week @ 2024-06-07 1150514/week @ 2024-06-14 1226907/week @ 2024-06-21 1130928/week @ 2024-06-28 1156708/week @ 2024-07-05 1207971/week @ 2024-07-12 1259342/week @ 2024-07-19 1247231/week @ 2024-07-26 1218389/week @ 2024-08-02 1330582/week @ 2024-08-09 1385097/week @ 2024-08-16

5,420,333 每月下载量
用于 34,595 个包 (2,022 个直接使用)

MIT/Apache

180KB
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 文档

MSRV 政策

crates.io 上发布的库具有 MSRV v1.57。MSRV 的更改将伴随着小版本号的增加。

CLI 工具及其相应的支持库具有 MSRV v1.76。MSRV 的更改将伴随着补丁版本号的增加。

许可证

本项目可在以下任一许可证下使用:

任由您选择。

贡献

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

除非您明确声明,否则任何根据 Apache-2.0 许可证定义的、有意提交以包含在本项目中的贡献,将根据上述条款双授权,而不附加任何额外的条款或条件。

依赖项

~0.6–1.4MB
~29K SLoC