組み合わせを試してみたので、その過程で調べたことや考えたこと・学んだことをつらつらと書き綴ってみます。似たようなことをやろうとしている方の参考になれば幸いです。詳しい方にはアドバイス頂けると嬉しいです。今回もともとやりたかった要件としては以下になります。可能な範囲で高速化する:保守性に難が出ない範囲で高速化したい。ある程度のメンテナンス性:自分も含めてフロントエンド専門でない人が片手間で開発するものになるので、型やステート管理が欲しい。以上の前提を元に検討したのですが、全てを自作すると少し時間がかかりそうだったので、今回は有り物のフレームワークを利用することにしました。使ったフレームワーク。ミニマリズムな雰囲気。使ったフレームワーク。エコシステムと統合されたフルスタックな雰囲気。いずれもユニバーサルなアプリケーションを作ることが出来ますし、設定も至って簡単です。ビルド成果物も自動的に分割してくれるので、極端に大きなバンドルが出来ることもありません。備えていない機能です(他にもありますが主要なものを抜粋します)。備えている主要な機能レイアウトデフォルトでレイアウトをサポートしています。ページ遷移間のトランジションも簡単に実装することが出来るので、リッチなページ遷移を実現できます。これをやるのはコードを読む限りかなり難しそうです。呼び出し時のプログレスバーの表示までデフォルトでサポートされています。動的ルーティングをサポートしていません。このような機能はありません。クエリパラメータとして渡すしかありません。様々な機能をモジュールとして提供しており、これらを使えば大体やりたいことが出来るようになっています。簡単に使うことが出来ます。自作しないといけないところです。方が良いだろうと考えました。よるステート管理もサポートしており、必要な要件は満たしているように見えました。使うことになりました。細かい点は割愛しますが、主な理由は以下になります。特有のテンプレート言語を覚える必要があったり、エラー発生時のスタックトレースから何を直せば良いか分からなくなるなど、最初に考えていたより複雑に感じました。いう感じで、学習コストが低いように感じました。サポートを強化しているようなのですが、まだ開発環境が少し追いついていないようです。Component)を使うと補完やフォーマットが上手く動かなくなるケースがありました。しても自然なもので非常に良く出来ていると感じました)。やってくれている部分なのか把握しきれなくなるときがありました。やり方に従う必要がある点をやや不満に感じました。使ったほうが良いと思います。良く出来ていると思います。開発環境をセットアップしていきます。使用出来るようにしてみます。リポジトリには多数のサンプルプロジェクトが用意されているので、こちらを参考にします。使うためのプラグインも用意されています)。使ったコンポーネントが書けるようになりました。同じなので、文法などの学習コストがほぼ無いところは良いですね。コンポーネントの型定義を読んだぐらいで自然に書き始められました。ロードすることが出来ます。}}これで以下のように初期プロパティをロードできるようになりました。外側に配置しないといけない点でしょうか。して実装する方が良いかもしれません。enhance(Index)コンポーネントの配置については考え中です。ページコンポーネント以外は置けないようなので(もし置く方法があれば教えて下さい!)今回は以下のようにしています。ページコンポーネント。初期プロパティの読み込みなどはこちらでやっています。ページコンポーネントの本体。レイアウトコンポーネント。細かなコンポーネント群。来ていないので、後々変えるかもしれません。直下のコンポーネントが肥大化してしまい、読みづらくテストもしづらくなるようように感じたためです(と言ってもテストは多分書かないのですが......)。使ったことはありませんでした。今回は比較的規模が大きくなりそうな予感がするので、何かしらのステート管理ライブラリを導入することにしました。リポジトリに公式サンプルが用意されています。使ってみて具合が悪ければ、シンプルなステート管理システムを自作すれば良いかと考えました。初期化するようにする)、初期ステートをブラウザに引き継ぐようにします。いうライブラリが用意されているので、こちらを使えば大体うまくやってくれます。やり方は色々あるようなのですが、今回は以下のようにしました。いうプロパティが渡ってくるようになるので、これを使って初期化します。いうユーティリティを使うことで、ある程度型安全に記述することが出来るのでこちらを利用しました。パターンマッチっぽく記述することが出来ます。いうアクションが自動的に作成されます。いう型を与えることが出来ます。いう型は自分で定義しました。実装出来ているかなどは検査できません。仕方ないところのようです(が、言語仕様についてきちんと調べたわけではないので、もしかしたら出来るのかも?)。いうライブラリを使って次のステートを計算しています。使ってイミュータブルに次のステートを計算するためのライブラリですが、スプレッド演算子を使うよりも自然かつ簡単に記述できます。国内であまり情報を見ないのと、出来たばかりのライブラリのようなので実際にプロダクションで利用出来る品質なのかは分かりません。試してみてから判断してみようかと思います。使う場合、非同期処理については大きく以下の流派が存在するようです。公式ドキュメントで言及されている準公式ミドルウェア。