1个稳定版本
1.0.0 | 2020年9月13日 |
---|
#1412 在 编码
18KB
350 行
web-sugars
这是一个针对与web相关的crate(如web-sys
、js-sys
、wasm-bindgen
)的sugars。
本crate的目标
- 提供有用的语法sugars。
- 提供有用的错误处理。
非目标
- 特定应用的功能。
- 特定JS库的功能。
示例
对于#[wasm-bindgen]
函数的简单错误处理,以及简单的常用函数调用
use web_sugars::prelude::*;
#[wasm_bindgen]
pub fn my_wasm_func() -> Result<JsValue, JsValue> // <- by wasm-bindgen spec.
{
// web-sugars functions are returns Result<T, WebSugarError>,
// and WebSugarError has a From trait. Thus, you can type just `?` to throw an error.
let _window = get_window()?;
// No need `get_window()?.get_document()?` chains, just call `get_document`.
let _document = get_document()?;
// No need `.get_window()?.get_document()?.get_element_by_id()?` chains, just acll `get_element_by_id`.
let _element = get_element_by_id("target-id")?;
let _elements = get_elements_by_tag_name("div")?;
let _xpath_results = evaluate("/html//p")?;
// Fetch a String data, all of errors are handled by `WebSugarError`.
let _data: String = fetch_as_string("https://example.com/my_data.txt")?;
// Fetch a JSON
let _data: JsValue = fetch_as_string("https://example.com/my_data.json")?;
// Fetch a JSON, and then deserialize to `MyType` with serde.
let _data: MyType = fetch_as_json_as::<MyType>("https://example.com/my_data.json")?;
// Fetch a binary data to `JsValue` of `ArrayBuffer`
let _data: JsValue = fetch_as_array-buffer("https://example.com/my_data.bin")?;
// Get a Vec<T> from JsValue of ArrayBuffer easily
let _data: Vec<u8> = _data.as_vec()?;
// And more sugars may help you :)
}
许可证
作者
依赖项
~8–10MB
~201K SLoC