mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-03-16 18:20:51 +00:00
This commit starts to add support for in-browser testing with `wasm-bindgen-test-runner`. The current idea here is that somehow it'll be configured and it'll spawn a little HTTP server serving up files from the filesystem. This has been tested in various ways but isn't hooked up just yet, wanted to make sure this was somewhat standalone! Future support for actually running these tests will be coming in later commits.
wasm-bindgen
Facilitating high-level interactions between wasm modules and JavaScript.
Introduction blog post: "JavaScript to Rust and Back Again: A wasm-bindgen
Tale"
Import JavaScript things into Rust and export Rust things to JavaScript.
src/lib.rs
:
#![feature(use_extern_macros)]
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
// Import the `window.alert` function from the Web.
#[wasm_bindgen]
extern {
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!
index.js
:
// Asynchronously load, compile, and import the Rust's WebAssembly
// and JavaScript interface.
import("./hello_world").then(module => {
// Alert "Hello, World!"
module.greet("World!");
});
Guide
📚 Read the wasm-bindgen
guide here! 📚
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (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
!
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.
Description
Languages
Rust
98.5%
JavaScript
1%
WebAssembly
0.3%
HTML
0.1%