Vue.jsエンジニアのReact入門
日本・アジア圏では、Vue.jsは人気があるように観測されるが、実際にグローバルな視点でみると、Reactが圧倒的に人気・シェアがある。npmtrends.comでnpm installされている数を比較してみる。
NPM Trends: Compare NPM package downloads
数字でみても、Vue.jsとReactでは圧倒的な差がある。
これまで、私もVue.jsでの開発案件が多かったこともあり、Vue.jsばかりを使ってきて、Reactにあまり触れてこなかった。今回、Reactの開発案件に携わることになったので、Vue.jsエンジニアのReact入門として、Vue.jsとReactの違い、Reactの機能などをこれからまとめていく。同じようなVue.jsエンジニアでReactにチャレンジしようと思っていた人の一助になればと。
まずは、それぞれのフレームワークの特徴から、大枠を掴むこととする。
Vue.jsとは
まずは、これまで学習してきたVue.jsに関して、概要をまとめる。
公式のVue.jsの説明文の一文は以下の通りである。
Vueはユーザーインターフェイスを構築するためのプログレッシブフレームワークです。
プログレッシブフレームワークとは、英語の意味から考えると、「Progressive」には「進歩的、革新的、段階的な」という意味があり、直訳すると「革新的なフレームワーク」である。これは、Vue.jsの開発者であるEvan You氏が提唱している概念である。技術の進歩が早い現代において、アプリケーションの解決したい様々な要求に対して、どのような規模、段階のアプリケーションに対しても、適切なライブラリやツールを導入することで対応できる柔軟性を持ち合わせるフレームワークのことである。Vue.jsの特徴的な機能を3つあげる。
リアクティブシステム
DOMとJavaScriptのデータを同期する、双方向のデータバインディングを容易に実現可能。データ駆動的な開発が可能になる。
そして、興味深いことに、Vue.jsの公式にReactとの対比が記載されていた。
共通点
- 仮想 DOM を活用している
- リアクティブで組み合わせ可能なビューのコンポーネントを提供している
- コアライブラリに焦点をあわせ、ルーティングやグローバルの状態管理などは関連ライブラリに任せている
相違点
DOM描画ロジック
React
コンポーネントの状態が変化するとき、そのコンポーネントをルートとして、コンポーネントのサブツリー全体を再描画する。不要な子コンポーネントの再レンダリングを避けるための対策が必要。
Vue.js
コンポーネントの依存関係が描画中に自動的に追跡されるため、システムは状態が変化したときに実際にどのコンポーネントを再描画する必要があるか正確に認識する。HTML & CSS
React
React は、すべてが JavaScript である。すべてのコンポーネントは JSX を用いた 描画関数 (render) の中で、HTML構造の UI を表現する。また、CSS のスコープを限定するときに、CSS-in-JSという新しい概念が必要である。Vue.js
Vueは、HTML ベースのテンプレートで実装が可能である。HTML に v-if v-for などの制御用のコードとして JavaScript の断片を埋め込むだけであり、HTMLが主である。また、単一ファイルコンポーネントのスタイリングも、非常に柔軟に対応が可能である。関連ライブラリの拡張性
React
React はこのような関心事はコミュニティにまかせており、より断片的なエコシステムを作り上げている。そのため、関連ライブラリは大衆的であるが、React のエコシステムは Vue を大きく上回って豊かである。Vue.js
Vue における状態管理やルーティングのための関連ライブラリ等はすべて公式にサポートされていて、コアのライブラリとともに更新され続けている。
Reactとは
次に、Reactの公式ドキュメントをみてみる。
一行目には以下の記載がある。
React はユーザインターフェースを作成する為の JavaScript のライブラリです。
Vue.js と対比して、Vue.js は「フレームワーク」と明示されていたが、React の場合は「JavaScript のライブラリ」と記載されている。先ほどの Vue.js の相違点でも記載があったが、React は全てが JavaScript で記述され、 JSX という JavaScript の中にHTMLを埋め込むことができる構文を用いる。そのため、ライブラリと表現していると思われる。
まとめ
今回は、公式ドキュメントを読んで、Vue.js と React の対比をしてみた。次からは、実装ベースでまとめを行っていく。
最後に、React の公式ドキュメントで大切な考えが記載されていたので、自分への戒めも含め、記載しておく。
コードは書くよりも読むことのほうが多いこと、そしてモジュール化されていて明示的であるコードはより読みやすいということを思い出してください。大規模なコンポーネントのライブラリを構築し始めると、この明示性やモジュール化しやすさのありがたみが分かり始めます。そしてコードを再利用できるようになるにつれて、あなたが書くコードの行数は減っていくのです。:) React の流儀 – React