Front-end Developer Handbook 2017を教科書にフロントエンド周りの技術を習得する連載。
第33回はPart II: Learning Front-End Devから、23項のLearn React & Reduxを紹介します。
ReactとReduxについて学ぶの説明です。
ReactとReduxについて学ぶ
ここではフロントエンドのフレームワークを学びましょう。今回学ぶReact&Redux以外ですと、Angular, Vue.js, Riot.jsなどが2017年現在有名です。なぜReactを学ぶかですが、フロントエンドアーキテクチャを学んだ際に、2016年でjQueryに次いで使用されているということがわかりました。また、Facebookが提供しているため開発&サポートが長く続くであろうこと、大規模サイトの構築にも耐えられること、などが挙げられます。
その他のフレームワークがReact&Reduxに比べて見劣りするわけではありません。小規模サイトを作るのであればVue.jsの方が適していることもありますし、SPAからデスクトップアプリケーションまで、なんでも一つのフレームワークで管理したいのであればAngularが良いかもしれません。ここで重要なのは1つフロントエンドフレームワークについて学ぶということです。
React
Reactとは、FacebookがOSSとして公開している、UIのパーツを作るためのライブラリです。
M-V-CのViewの一部の機能を提供するライブラリなので、Angularとも併用できます。以下、Reactを導入した際のメリットです。
- パフォーマンスが良い。(仮想DOM)
- 規模が大きくなっても管理しやすい。
JSX
ReactはJSX(Facebook独自JavaScriptシンタックスシュガー)を使用します。そのままではブラウザは解釈出来ないため、Babelによるコンパイルが必要になります。サーバ側でコンパイルする方法以外でも、CDN経由でReact.jsもBabel-coreも取得する事ができます。
<script src="https://fb.me/react-15.2.0.js"></script> <script src="https://fb.me/react-dom-15.2.0.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
また、JSXを使用しない方法もあります。
Virtual DOM
Reactでは直接DOM要素を操作することなくWebページの生成を行います。仮想DOMと呼ばれるDOMの設計図を作成し、それをもって本物のDOMを構築します。Reactが行っていることは、
[JSONデータ] + [関数によって書かれたコンポーネント] = 仮想DOM(JSオブジェクト) -> DOMに反映
です。このコンポーネントとデータを分けられることは管理のし易さにつながり、仮想DOMからDOMへ反映する時はデータに差分が生じたところのみなので早いということになります。
参照元 : Reactを使うとなぜjQueryが要らなくなるのか
コンポーネント指向
コンポーネントとは、構造/見た目/振る舞いをセットにして定義することを指します。つまりHTML/CSS/JavaScriptを3つセットで1つにします。これは今までHTML/CSS/JavaScriptを別々に記述し、出来上がるDOMもしくは画面イメージを想像/確認しながら開発していたのに対し、画面に表示したいパーツ(コンポーネント)を一つずつ作成し、組み合わせることを可能にしました。
それ以外にもこのコンポーネント指向で開発することの素晴らしいところは、シンプルだということです。例えば一つの<input type="button">
のコンポーネントが定義されていたとして、クライアントデバイスやユーザによって見た目や振る舞いを追加する必要が出てきた場合、このコンポーネントの条件分岐を増やし、CSSやJavaScriptを引数で渡せばいいだけです。コンポーネント自体の纏まりは崩れません。これをjQueryで行おうとすると、より広範囲のコードの書き直しをするか、スパゲッティコードを生むかになるでしょう。
Image source: React.js Introduction For People Who Know Just Enough jQuery To Get By
実践
Tutorial: Intro To React(チュートリアル:Reactの紹介)を読みながら、○×ゲームを作成してみましょう。
See the Pen Tic Tac Toe by Dan Abramov (@gaearon) on CodePen.
Source : Tutorial: Intro To React
その他資料
- 13 things you need to know about React [読み物]
(あなたが知るべき13のReactのこと) - React Enlightenment [読み物]
(啓発 React) - ReactJS For Stupid People [読み物]
(バカの為のReactJS) - React In-depth: An exploration of UI development [読み物]
(React In-depth:UI開発の探究) - いまさら聞けないReact、Virtual DOM、JSX超入門 [読み物][日本語]
Redux
Reduxは、一箇所で状態管理を行うためのフレームワークです。
ReduxはReactだけでなく、AngularやEjQuery、JavaScriptなどと一緒に利用することができます。ReactはUIをstateの関数として扱うので相性が良いです。
以下の3原則を掲げています。
- Single Store(Store=ステートを管理する場所)
- immutableなState
- 副作用のないReducer(現在のstateとactionを受けて新しいstateを返すだけ)
Redux Tutorials(Reduxチュートリアル)
redux-saga
redux-sagaは「タスク」をReduxアプリケーション上で実現するためのライブラリです。
この「タスク」には非同期処理を実現する手法も含まれています。
その他資料
- You Might Not Need Redux [読み物]
(あなたにReduxは多分必要ない) - A Dummy’s Guide to Redux and Thunk in React [読み物]
(サルでもわかるReduxとThunk in React) - Getting Started with Redux [視聴]
(Redux入門) - Learn Redux [視聴]
(Reduxを学ぶ) - 10 Tips for Better Redux Architecture [視聴]
(よりよいReduxアーキテクチャのための10のヒント) - Redux入門【ダイジェスト版】10分で理解するReduxの基礎 [読み物][日本語]
- React+Redux入門 [読み物][日本語]
- Redux の基本 [読み物][日本語]
- Reduxの実装とReactとの連携を超シンプルなサンプルを使って解説 [読み物][日本語]
補足
あなたがReactをうまく扱える様になれば、PreactまたはInferno、あるいはその両方を検討するかもしれません。Reduxをマスターしたときは、MobXを試してみたり、独自の小さなカスタムReduxをゼロから実装するようにしてみてください。
0 件のコメント:
コメントを投稿