Open12

dioxusが気になる人

nkowne63nkowne63
  • (推測)マクロの形式がrustフレンドリーな気がする。補完が効くとうれしい。
  • モバイルはwebview + native rust
  • デスクトップもできる
  • SSRもできる
  • hooksもできる
  • PropsのStructと関数を定義して使う。(impl traitで良かったのでは...?)
  • レンダラー自体はSendじゃないらしい。(多分そんなに困らない)
nkowne63nkowne63

調べるべきこと

あるとうれしいけど多分無いと思って調べること

  • storybookみたいなテスト環境
  • CSSとの統合(あるみたいな説明あった気がする)
  • chunkに分けてwasmをいい感じにロードしてくれるやつ(あったら多分もっと有名になってる)
nkowne63nkowne63

awesome-dioxus

https://github.com/DioxusLabs/awesome-dioxus

golde

dioxus中でjsを実行できる。ふむ...色々悪いことができそう(ニチャア)
https://github.com/mrxiaozhuox/golde

deploy to vercel

https://github.com/lucifer1004/dioxus-vercel-demo
trunkっていうやつがあるとできるらしい。そんなのあるんだ(初耳)
https://github.com/thedodd/trunk

discordへのリンクもある。まだ164人しかいない(2022.02.08 21:37時点)

nkowne63nkowne63

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の問題らしい。かなしい。

nkowne63nkowne63

cargoってyarn resolutionみたいな「この依存ライブラリの依存ライブラリにはこれを使う」みたいな指定はできない?

nkowne63nkowne63

ちなみに補完はそんなに効かない。でもrust-analyzerくんが頑張ってそうな予感はする

nkowne63nkowne63

今後やってみたいこと

mizchiさんのscrapでまだやられてなさそうなことを色々見ていくか。

基礎的な調査

  • スタイルをいかに適用させるのか(未執筆)
  • SSRはどうなるのか
  • TODO MVCでのビルドサイズ比較

応用的な調査

以下の2つでwordleソルバでも作ってみる。CLIだとめんどいし。

  • モバイルアプリ開発(現時点ではiOSしか対応していない...? -> androidもいけそうな予感)
  • デスクトップ開発
  • frontend benchmarkに登録してみる