宣布 js-sys 库!
我们刚刚在 crates.io 上发布了 js-sys 库!
js-sys 库包含对所有全局 API 的原始 #[wasm_bindgen] 绑定,这些 API 由 ECMAScript 标准保证存在于每个 JavaScript 环境中。它不包含对任何 Web 或 Node 特定 API 的绑定。使用 js-sys 库,我们可以使用 Object、Array、Function、Map、Set 等,而无需手动编写 #[wasm_bindgen] 导入。
例如,我们可以调用 JavaScript Function 回调并使用 Date.now() 计时它们执行所需的时间,我们不需要自己编写任何 JS 导入
extern crate js_sys;
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn timed(callback: &js_sys::Function) -> f64 {
let then = js_sys::Date::now();
callback.apply(JsValue::null(), &js_sys::Array::new()).unwrap();
let now = js_sys::Date::now();
now - then
}js-sys 库还没有完全完成。我们仍然缺少一些 JavaScript 类型和方法的绑定。如果您想帮助 js-sys 完成,请查看此问题!
此外,如上所述,js-sys 库不包含对任何 Web API 的绑定,例如 document.querySelectorAll。这些将成为 web-sys 库的一部分,该库是从 WebIDL 接口定义机械生成的。我们也需要帮助 web-sys!如果您想帮助 web-sys,请查看 其贡献文档 和 标记为“web-sys”的问题。
最后,非常感谢 到目前为止为 js-sys 库做出贡献的 34 位人士!💖
- Alexander Kryvomaz
- Alex Crichton
- belfz
- Chris Kolodin
- Craig Disselkoen
- data-pup
- Dimitrii Nemkov
- gaurikholkar
- Herman J. Radtke III
- Ivan Enderlin
- Jannik Keye
- Johannes Henninger
- Jonathan Sundqvist
- Kevin Hoffman
- kzvi
- Lachezar Lechev
- Liigo Zhuang
- Marcin Baraniecki
- Matias Insaurralde
- Matt Long
- Michael Hoffmann
- Nick Fitzgerald
- R. Andrew Ohana
- robertdurst
- Satoshi Amemiya
- Sendil Kumar
- Stephan Renatus
- Tim Ryan
- T. Nagasawa
- Tomohide Takao
- toversus
- Tyler Laing
- Tyler Wilcock
- xeqlol
Rust 和 WebAssembly