Choosing a web library
はじめに
Yew アプリはweb-sys
かstdweb
で作ることができます。
これらのクレートは Rust と Web API のバインディングを提供しています。
Cargo の依存クレートにyew
を追加する際はどちらかを選ばなければいけません:
# Choose `web-sys`
yew = "0.17"
# Choose `stdweb`
yew = { version = "0.17", package = "yew-stdweb" }
Rust / Wasm 活動チームのサポートがあるweb-sys
が推奨です。
使用例
// web-sys
let window: web_sys::Window = web_sys::window().expect("window not available");
window.alert_with_message("hello from wasm!").expect("alert failed");
// stdweb
let window: stdweb::web::Window = stdweb::web::window();
window.alert("hello from wasm!");
// stdweb with js! macro
use stdweb::js;
use stdweb::unstable::TryFrom;
use stdweb::web::Window;
let window_val: stdweb::Value = js!{ return window; }; // <- JS syntax inside!
let window = Window::try_from(window_val).expect("conversion to window failed");
window.alert("hello from wasm!");
2 つのクレートの API はわずかに異なりますが、だいたい同じ目的で似た機能が提供されています。
一方を選ぶ
アプリにweb-sys
とstdweb
のどちらを選ぶかにおいてはいくつかの見方があります。
注意として、一つのアプリに両方を用いることができるのですが、クレートをコンパイルした際にバイナリのサイズを小さくするには
一方だけを使用するのが良いです。
web-sys | stdweb | |
---|---|---|
プロジェクトの進捗状況 | Rust / Wasm 活動チーム により活発にメンテナンスされている | GitHubで8ヶ月間動きなし |
Web API のカバー | RustのAPIはWeb IDLスペックから自動的に生成される。 | Browser APIはコミュニティにより追加。 |
RustのAPIのデザイン | ほとんどのAPIコールおいて | しばしば |
サポートされているビルドツール |
|
|
サポートされているターゲット |
|
|