我們剛在 crates.io 上發佈了 js-sys 程式庫

js-sys 程式庫包含到 ECMAScript 標準保證於每個 JavaScript 環境中都會存在的,所有全球 API 的 #[wasm_bindgen] 原始繫結。它不會包含任何 Web 或 Node 限定的 API 繫結。透過 js-sys 程式庫,我們可以處理 ObjectArrayFunctionMapSet 等,而不需要手動撰寫 #[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