宣布推出 js-sys 程式庫!
我們剛在 crates.io 上發佈了 js-sys
程式庫!
js-sys
程式庫包含到 ECMAScript 標準保證於每個 JavaScript 環境中都會存在的,所有全球 API 的 #[wasm_bindgen]
原始繫結。它不會包含任何 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
程式庫尚未完全完成 100% 的功能。仍然有一些 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
- 對比
- Tyler Laing
- Tyler Wilcock
- xeqlol