logo
/
🤔VueとReactの最終検討 @20210803
2021-08-03
  • Web Components(Web標準)の存在
    • 数年経てばかなり普及した標準となるはず。
    • それでも少し冗長な手続き型の書き方なのでフレームワークはまだまだ必要
    • なのでコレの存在は理由にならない
  • CSSに対する取り扱い
    • Reactを使う場合、CSS in JS、CSS Modules、Styled-componentsが主流
    • Vueの場合、SCSSは使うがテンプレートファイル内にScopedで標準に近い形で記述することが出来る
      • (逆にScopedがなくなった場合に破綻することにかもしれない)
    • CSSは最終的にはやはりPure CSSとして扱わなければいけない
      • できるだけ標準に近い形+d便利な方を使いたい
  • JSXとテンプレート
    • 正直JSXの方がリッチな表現には使いやすい
    • VueもJSXのBabelプラグインが有るので普通に使えば良い
  • 書き心地
    • Reactのほうが業務的なコードを書いている気分になった
    • 多分コレはJSXと純粋な関数によるものだと思う
    • Vue Composition APIとJSXを使えば同じ
  • エコシステム
    • React
      • ReactのFacebookは強い
      • NextのVercelも強い(機能的に)
      • Reactのプロユースも強い(Vue→Reactは聞くが、React→Vueはあまり聞かない)
      • これもComposition APIによるTypescriptサポートで変わると思う
    • Vue
      • VueもNuxtも企業が引っ張る形じゃないOSSなのが少し心配
      • Vueは公式が周辺ライブラリのサポートをしているのが強い
    • VueもReactも近い存在になった今、ReactからVueに乗り換えるモチベーションは無いのではないか
      • FacebookのReactが廃れることは考えにくい
      • そうなるとVueは廃れていくのではないか...
  • ライフサイクル(HookとComposition API限定)
    • Vue
      • onMounted``onUnMounted``onDestoryなど割とわかりやすい
    • React
      • 副作用があるコードはuseEffectで毎回レンダー時に呼ばれる
      • []を参照として渡すことで、mountunmount時の1回ずつ呼ぶことが出来る
  • Vueの駄目なとこ
    • componentsをimportして、更にcomponents:{...}で登録しないといけない
      • 結局import,登録,使用の3回書くことになる→選択肢は色々ある(公式参照)
    • jsxが標準じゃない
    • propsrequiredが必要→Typescriptの領分
  • 両方触ってみた感想
    • VueReactも触って、正直どっちも変わらない
    • Reactの方が難しいとか言われてるけどそんなこともない
    • JSXがただ見慣れないだけで、HTMLと根本は変わらないので難しいわけではない
    • どちらも素晴らしいフレームワークだし、僕が両方の差異が出るレベルの使いこなしが出来るとは思えない
  • 結論
    • どちらでも良いし、将来の移行は常に考慮しないといけないが、ReactNextを選択する