Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rustwasm/wasm-bindgen
Facilitating high-level interactions between Wasm modules and JavaScript
https://github.com/rustwasm/wasm-bindgen
binding-generator javascript rust rust-wasm wasm
Last synced: 5 days ago
JSON representation
Facilitating high-level interactions between Wasm modules and JavaScript
- Host: GitHub
- URL: https://github.com/rustwasm/wasm-bindgen
- Owner: rustwasm
- License: apache-2.0
- Created: 2017-12-18T20:38:44.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2024-10-16T09:16:20.000Z (19 days ago)
- Last Synced: 2024-10-25T06:24:23.631Z (10 days ago)
- Topics: binding-generator, javascript, rust, rust-wasm, wasm
- Language: Rust
- Homepage: https://rustwasm.github.io/docs/wasm-bindgen/
- Size: 22.2 MB
- Stars: 7,755
- Watchers: 103
- Forks: 1,070
- Open Issues: 460
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-APACHE
Awesome Lists containing this project
- awesome-rust-cn - rustwasm/wasm-bindgen - level interactions between wasm modules and JS. [<img src="https://api.travis-ci.com/rustwasm/wasm-bindgen.svg?branch=master">](https://travis-ci.org/rustwasm/wasm-bindgen) (Development tools / FFI)
- awesome-rust - rustwasm/wasm-bindgen - level interactions between wasm modules and JS. [<img src="https://api.travis-ci.com/rustwasm/wasm-bindgen.svg?branch=master">](https://travis-ci.org/rustwasm/wasm-bindgen) (Development tools / FFI)
- awesome-rust - rustwasm/wasm-bindgen - level interactions between wasm modules and JS. (Development tools / FFI)
- awesome-rust-cn - rustwasm/wasm-bindgen
- awesome-list - wasm-bindgen - level interactions between Wasm modules and JavaScript | rustwasm | 4415 | (Rust)
- StarryDivineSky - rustwasm/wasm-bindgen - bindgen 仅为您实际使用的 JavaScript 导入和导出的 Rust 功能生成绑定和粘合。例如,导入和使用该 document.querySelector 方法不会导致 Node.prototype.appendChild 或 window.alert 包含在绑定中。ECMAScript 模块。只需导入 WebAssembly 模块,就像导入 JavaScript 模块一样。未来兼容 WebAssembly 模块和 ECMAScript 模块集成。在设计时考虑了“Web IDL 绑定”建议。最终,Rust 生成的 wasm 函数和原生 DOM 方法之间不会有任何 JavaScript 填充码。因为 wasm 函数是静态类型检查的,所以其中一些原生方法的动态类型检查应该变得没有必要了,这有望解锁比 JavaScript DOM 访问更快的速度。 (JavaScript框架 / 其他_文本生成、文本对话)
- awesome-rust-zh - rustwasm/wasm-bindgen - 促进 wasm 模块和 JS 之间高级交互的项目。[<img src="https://api.travis-ci.com/rustwasm/wasm-bindgen.svg?branch=master">](https://travis-ci.org/rustwasm/wasm-bindgen) (开发工具 / FFI)
- awesome-rust - rustwasm/wasm-bindgen - A project for facilitating high-level interactions between wasm modules and JS. (Development tools / FFI)
- awesome-yew - wasm-bindgen - Facilitating high-level interactions between WebAssembly modules and JavaScript. (Crates / Wasm)
- awesomeLibrary - wasm-bindgen - Facilitating high-level interactions between Wasm modules and JavaScript (语言资源库 / rust)
- awesome-rust - rustwasm/wasm-bindgen - level interactions between wasm modules and JS. [<img src="https://api.travis-ci.com/rustwasm/wasm-bindgen.svg?branch=master">](https://travis-ci.org/rustwasm/wasm-bindgen) (开发工具 Development tools / 示例 FFI)
- fucking-awesome-rust - rustwasm/wasm-bindgen - A project for facilitating high-level interactions between wasm modules and JS. (Development tools / FFI)
- fucking-awesome-rust - rustwasm/wasm-bindgen - A project for facilitating high-level interactions between wasm modules and JS. (Development tools / FFI)
README
wasm-bindgen
Facilitating high-level interactions between Wasm modules and JavaScript.
Guide (main branch)
|
API Docs
|
Contributing
|
Chat
Built with 🦀🕸 by The Rust and WebAssembly Working Group
## Install `wasm-bindgen-cli`
You can install it using `cargo install`:
```
cargo install wasm-bindgen-cli
```Or, you can download it from the
[release page](https://github.com/rustwasm/wasm-bindgen/releases).If you have [`cargo-binstall`](https://crates.io/crates/cargo-binstall) installed,
then you can install the pre-built artifacts by running:```
cargo binstall wasm-bindgen-cli
```## Example
Import JavaScript things into Rust and export Rust things to JavaScript.
```rust
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));
}
```Use exported Rust things from JavaScript with ECMAScript modules!
```js
import { greet } from "./hello_world";greet("World!");
```## Features
* **Lightweight.** Only pay for what you use. `wasm-bindgen` only generates
bindings and glue for the JavaScript imports you actually use and Rust
functionality that you export. For example, importing and using the
`document.querySelector` method doesn't cause `Node.prototype.appendChild` or
`window.alert` to be included in the bindings as well.* **ECMAScript modules.** Just import WebAssembly modules the same way you would
import JavaScript modules. Future compatible with [WebAssembly modules and
ECMAScript modules integration][wasm-es-modules].* **Designed with the ["Web IDL bindings" proposal][webidl-bindings] in mind.**
Eventually, there won't be any JavaScript shims between Rust-generated wasm
functions and native DOM methods. Because the Wasm functions are statically
type checked, some of those native methods' dynamic type checks should become
unnecessary, promising to unlock even-faster-than-JavaScript DOM access.[wasm-es-modules]: https://github.com/WebAssembly/esm-integration
[webidl-bindings]: https://github.com/WebAssembly/proposals/issues/8## Guide
[**📚 Read the `wasm-bindgen` guide here! 📚**](https://rustwasm.github.io/docs/wasm-bindgen/)
You can find general documentation about using Rust and WebAssembly together
[here](https://rustwasm.github.io/docs).## API Docs
- [wasm-bindgen](https://docs.rs/wasm-bindgen)
- [js-sys](https://docs.rs/js-sys)
- [web-sys](https://docs.rs/web-sys)
- [wasm-bindgen-futures](https://docs.rs/wasm-bindgen-futures)## MSRV Policy
Libraries that are released on [crates.io](https://crates.io) have a MSRV of v1.57. Changes to the MSRV will be accompanied by a minor version bump.
CLI tools and their corresponding support libraries have a MSRV of v1.76. Changes to the MSRV will be accompanied by a patch version bump.
## License
This project is licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or
http://opensource.org/licenses/MIT)at your option.
## Contribution
**[See the "Contributing" section of the guide for information on
hacking on `wasm-bindgen`!][contributing]**Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in this project by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.[contributing]: https://rustwasm.github.io/docs/wasm-bindgen/contributing/index.html