次に、サンプルアプリをベースにReact とAngular2を比較していきます。作成するのは、「TODOを登録する」アプリで、React、Angular2のどちらでも、UIと動作が同一となるようにしています。
アプリの作りとしては、テキストボックスにTODOを入力し、「登録」ボタンを押下すると画面下部にTODOが追加されるアプリケーションです。各TODOはクリックすることで完了済み(取り消し線)の状態になるようにしています。
アプリケーションのイメージは以下の通りです。
次に、画面の構成について説明します。React、Angular2どちらもコンポーネント指向のFWなので、アプリケーションをコンポーネントの集合として実装していきます。
個々の部品をコンポーネントとして分割していくことで、より柔軟でメンテナンスしやすいアプリケーションを開発できます。
続いて、アプリケーションを実装するに当たり、ReactとAngular2のソースコード上での比較を行います。今回は、基本的なコンポーネントの作成方法として、TODOリストの描画用である以下3つのコンポーネントについて比較してきます。
srcディレクトリ内に、コンポーネントごとにファイルを分けています。
todo-react/src ├ components | ├ Add.js……Addコンポーネント | ├ App.js……Appコンポーネント | ├ Todo.js……Todoコンポーネント | └ TodoList.js……TodoListコンポーネント ├ styles/……CSSファイルを格納 └ index.js……アプリケーションのエントリーポイント
Angular2で作成するに当たって、「src/app」内にコンポーネントごとにディレクトリを作成し、servicesディレクトリ内に、コンポーネント共通で利用するロジックをまとめています。
todo-angular2/src/app ├ add/ | ├ add.component.html……Addコンポーネント(画面描画) | └ add.component.ts……Addコンポーネント(ロジック) ├ todo/ | ├ todo.component.html……Todoコンポーネント(画面描画) | └ todo.component.ts……Todoコンポーネント(ロジック) ├ todo-list/ | ├ todo-list.component.html……TodoListコンポーネント(画面描画) | └ todo-list.component.ts……TodoListコンポーネント(ロジック) ├ services/ | └ todo.service.ts……各コンポーネントから呼び出される共通ロジック ├ interface/ | └ todo.ts……TODO情報格納用インタフェース ├ app.module.ts……アプリで利用するモジュール群の定義ファイル ├ app.component.html ……Appコンポーネント(画面描画) └ app.component.ts ……Appコンポーネント(ロジック)
SPAの開発には、従来のJavaScriptの構文をより高度化させるためのライブラリを使用することが多く、有名なものとして「Babel」「TypeScript」が挙げられます。これらのライブラリを使用することで、JavaScriptの最新仕様であるECMAScript 2015を使った開発が可能となり、Class構文や定数、arrow関数などが使えるようになります。
今回、Reactではスターターツールに組み込まれている「Babel」を使用します。Babelは純粋なECMAScript 2015で書かれたコードを従来のコードに変換する機能を提供します。
Angular2はスターターツールに組み込まれている「TypeScript」を使用します。「Babel」と同様、ECMAScript 2015を使った開発が可能になるのに加え、静的型付けを提供するため、コンパイラを用いて開発時のあいまいさを回避することが可能です。
フレームワーク | 利用ライブラリ | 特徴 |
---|---|---|
React | Babel | Class構文や定数、arrow関数などのECMAScript 2015で追加される機能が利用できる |
Angular2 | TypeScript | ECMAScript 2015の機能が利用できる。また、静的型付けを提供しており、型チェックが可能となる |
なお、React開発にはBabelが用いられることが多く、Angular2はTypeScriptが標準となっていますが、ReactでTypeScriptの使用、Angular2でBabelの使用も可能です。
続いて、ReactとAngular2それぞれのコンポーネントの実装方法を説明します。
Copyright © ITmedia, Inc. All Rights Reserved.