Open12
dioxusが気になる人
メイン
- (推測)マクロの形式がrustフレンドリーな気がする。補完が効くとうれしい。
- モバイルはwebview + native rust
- デスクトップもできる
- SSRもできる
- hooksもできる
- PropsのStructと関数を定義して使う。(impl traitで良かったのでは...?)
- レンダラー自体はSendじゃないらしい。(多分そんなに困らない)
- dioxus-cliとdioxus-studioがある。後者はソースコード見たけど空っぽ。
- 前者はhelpだと見れない隠しコマンドがソースコードにある。まだ試してない。
githubのorgはここ
調べるべきこと
- ベンチマーク(https://github.com/krausest/js-framework-benchmark にはない。)
- seedよりは速くあってほしいかも
- CLIの挙動(どういうことができるのか)
あるとうれしいけど多分無いと思って調べること
- storybookみたいなテスト環境
- CSSとの統合(あるみたいな説明あった気がする)
- chunkに分けてwasmをいい感じにロードしてくれるやつ(あったら多分もっと有名になってる)
awesome-dioxus
golde
dioxus中でjsを実行できる。ふむ...色々悪いことができそう(ニチャア)
deploy to vercel
trunkっていうやつがあるとできるらしい。そんなのあるんだ(初耳)
discordへのリンクもある。まだ164人しかいない(2022.02.08 21:37時点)
Get Startedする
Setting up Dioxus
まず、コンパイラのターゲットにwasmを加える(自分はもう加わってた)
rustup target add wasm32-unknown-unknown
desktopのsetupはskipしてみて問題があったら戻る
Hello World
cargo-editとcargo-expandを入れておく。
cargo-editを入れるとnpm install XXXみたいにCargo.tomlに書き加えてくれて、cargo-expandはマクロを展開してくれるらしい。
cargo add dioxus --features desktop
したあとに以下のコードを書いてみる。(https://dioxuslabs.com/guide/hello_world.html )
use dioxus::prelude::*;
fn main() {
dioxus::desktop::launch(App);
}
fn App(cx: Scope) -> Element {
cx.render(rsx! (
div { "Hello, world!" }
))
}
cargo runしたら謎のエラーが出た。
error: there is no argument named `mime`
--> /Users/xxxxxx/.cargo/registry/src/github.com-xxxxxxxxxxxxxx/dioxus-desktop-0.1.6/src/lib.rs:247:49
|
247 | ... let meta = format!("{mime}");
| ^^^^^^
error: could not compile `dioxus-desktop` due to previous error
warning: build failed, waiting for other jobs to finish...
error: build failed
dioxus-desktopの問題らしい。かなしい。
先行研究の存在を今更知る人(申し訳ない & 手が早い...)
今後やってみたいこと
mizchiさんのscrapでまだやられてなさそうなことを色々見ていくか。
基礎的な調査
- スタイルをいかに適用させるのか(未執筆)
- SSRはどうなるのか
- TODO MVCでのビルドサイズ比較
応用的な調査
以下の2つでwordleソルバでも作ってみる。CLIだとめんどいし。
- モバイルアプリ開発(現時点ではiOSしか対応していない...? -> androidもいけそうな予感)
- デスクトップ開発
- frontend benchmarkに登録してみる