@@ -3,20 +3,26 @@ sample-ui-react
33
44### はじめに
55
6- [ BootStrap ] ( http://getbootstrap. com/ ) / [ React.js] ( https://facebook.github.io/react/ ) を元にしたプロジェクト Web リソース ( HTML / CSS / JS ) です。 SPA ( Single Page Application ) モデルを前提としています。
6+ [ Material-UI ] ( http://www.material-ui. com ) / [ React.js] ( https://facebook.github.io/react/ ) / [ Redux ] ( https://github.com/reactjs/redux ) を元にしたプロジェクト Web リソース ( HTML / CSS / JS ) です。 SPA ( Single Page Application ) モデルを前提としています。
77
88サンプル確認用の API サーバとして [ sample-boot-hibernate] ( https://github.com/jkazama/sample-boot-hibernate ) を期待します。
99
1010` ※ライブラリではなく上記ライブラリを用いた単純な実装サンプルです。 `
1111
12+ > Flux 風な Redux を利用していますが、純粋な Flux サンプルとは異なる点に注意してください
13+
1214#### ビルド/テスト稼働環境構築
1315
14- ビルドは [ Node.js] ( http://nodejs.jp/ ) + [ Webpack] ( https://webpack.github.io/ ) + [ Gulp] ( http://gulpjs.com/ ) で行います。以下の手順でインストールしてください。
16+ ビルドは [ Node.js] ( http://nodejs.jp/ ) + [ Webpack] ( https://webpack.github.io/ ) + [ Gulp] ( http://gulpjs.com/ ) + [ Yarn ] ( https://yarnpkg.com/ ) or [ npm ] ( https://www.npmjs.com/ ) で行います。以下の手順でインストールしてください。
1517
16181 . Node.js の[ 公式サイト] ( http://nodejs.jp/ ) からインストーラをダウンロードしてインストール。
17191 . 「 ` npm install -g gulp ` 」 を実行して Gulp をインストール。
1820 - Mac ユーザは 「 ` sudo npm install -g gulp ` 」 で。
19- 1 . コンソールで本ディレクトリ直下へ移動後、 「 ` npm install ` 」 を実行して Gulp ライブラリをインストール。
21+ 1 . 「 ` npm install -g yarn ` 」を実行して Yarn をインストール。
22+ - Mac ユーザは 「 ` sudo npm install -g yarn ` 」 で。
23+ - インストール作業を npm 経由で直接実行する場合は不要です
24+ 1 . コンソールで本ディレクトリ直下へ移動後、「 ` yarn ` 」を実行して ` package.json ` 内のライブラリをインストール
25+ - Yarn を利用しない時は 「 ` npm install ` 」 を実行。
2026 - node-sass あたりでビルドに失敗した場合は、 「 ` npm uninstall node-sass ` 」 を実行してから再度試してみてください。
2127
2228### 動作確認
@@ -31,7 +37,7 @@ sample-ui-react
3137
3238### 開発の流れ
3339
34- 基本的にテンプレート ( .pug / .scss / .js ( ES6 ) ) を Web リソース ( .html / .css / .js ) へ Gulp / Webpack でリアルタイム変換させながら開発をしていきます。
40+ 基本的にテンプレート ( .pug / .scss / .js ( Babel ) ) を Web リソース ( .html / .css / .js ) へ Gulp / Webpack でリアルタイム変換させながら開発をしていきます。
3541動作確認は Gulp で独自に Web サーバを立ち上げた後、ブラウザ上で行います。
3642
3743#### 各種テンプレートファイルの解説
@@ -40,8 +46,8 @@ sample-ui-react
4046 - HTML を生成するテンプレートツール。公式サイト TOP にある簡素な記法が特徴。
4147- [ Sass (SCSS)] ( http://sass-lang.com/ )
4248 - CSS 表記を拡張するツール。変数や mixin 、ネスト表記などが利用可能。
43- - [ ES6 with Babel] ( https://babeljs.io/ )
44- - ES6 用の Polyfill 。 ES5 でも ES6 風に記述が可能。
49+ - [ Babel] ( https://babeljs.io/ )
50+ - ES201x 用の Polyfill 。 ES5 でも ES201x 風に記述が可能。
4551
4652#### 各種テンプレートファイルの変更監視 / Web サーバ起動
4753
@@ -59,15 +65,18 @@ sample-ui-react
5965### ポリシー
6066
6167- JS / CSS の外部ライブラリは npm で管理する
62- - jQuery や Bootstrap 等、グローバルスコープの汚染を許容するものはビルド済みリソースをそのまま流用する
68+ - ビルド時は vendor.bundle.js へ分割
6369- プロジェクト固有の JS は Webpack を利用して生成する
64- - グローバルスコープの汚染を許容せずにモジュールベースで開発する
65- - React は Flux のアーキテクチャを参考に実装する
66- - ページ遷移周りは react-router を利用
67- - React コンポーネントは ES6 のクラスベースで実装 ( see /js/platform/react.js )
68- - Flux は Facebook のサンプルを参考にしつつ実装 ( see /js/platform/react-flux.js )
69- - いくつか代表的な UI パーツは準備 ( see /js/platform/react-ui.js )
70- - Flux の良い実装が出てきたら自作せずにそちらを利用する
70+ - React / Redux はとりあえず以下の方針で
71+ - ページ遷移周りは react-router / react-router-redux を利用
72+ - React / Redux の Component 向けにサポートクラスを用意 ( see /js/platform/redux-support.js )
73+ - Redux Actions 概念をサポートクラスで簡易に ( see /js/platform/redux-action-support.js )
74+ - グローバルなステートで管理するのは横断的に保持したいもののみに限定
75+ - 入力や検索結果などの揮発性高いものはローカルなステートで
76+ - ページルートは container 配下へ配置
77+ - コンポーネントを進めていく時は component or container のサブディレクトリを掘る感じで
78+ - スタイル指定は theme.js へ集約
79+ - material-ui だとクラスベースの指定が負けそうなのでベタに指定
7180
7281#### ディレクトリ構成
7382
@@ -76,6 +85,7 @@ sample-ui-react
7685```
7786gulpfile.babel.js … gulp configuration
7887package.json … npm dependency
88+ yarn.lock … yarn semantic versioning
7989public … deploy resources (auto generate)
8090 css
8191 - style.css … from source/css
@@ -86,21 +96,21 @@ public … deploy resources (auto generate)
8696 index.html … from source/html
8797source
8898 css … css template files [SCSS]
89- html … html template files [Jade ]
99+ html … html template files [Pug ]
90100 js
91- actions … flux actionCreators
92- components … react component
101+ actions … redux actions
102+ api … server acccess api
93103 constants
94- dispatcher … flux dispatcher
104+ container … redux container component
95105 platform
96106 - plain.js … simple js library
97- - react-flux.js … react flux implementation (simple)
98- - react-ui.js … react ui parts
99- - react.js … project react extension
100- stores … flux store
101- - app.js … root page
107+ - react-support.js … project react support
108+ - redux-support.js … project redux support
109+ - redux-action-support.js … project redux actions support
110+ reducer … redux reducer
102111 - main.js … SPA entry
103112 - routes.js … SPA routing
113+ - theme.js … material ui style
104114 static … static resources (.png/.ico/robots.txt etc)
105115```
106116
@@ -110,18 +120,16 @@ source
110120
111121| ライブラリ | バージョン | 用途/追加理由 |
112122| ----------------------- | -------- | ------------- |
113- | ` superagent ` | 2.3.+ | HTTP 連携ライブラリ |
114123| ` react ` | 15.4.+ | アプリケーションの UI 機能を提供 |
115124| ` react-dom ` | 15.4.+ | アプリケーションの UI 機能 ( DOM ) を提供 |
116125| ` react-router ` | 3.0.+ | React.js の SPA ルーティングサポート |
117- | ` react-mixin ` | 3.0.+ | Reactクラス利用時のMixin拡張 |
118- | ` wolfy87-eventemitter ` | 5.1.+ | イベント連携ライブラリ |
119- | ` flux ` | 3.1.+ | Facebook Flux ライブラリ |
126+ | ` react-tap-event-plugin ` | 2.0.+ | タップ操作のサポート |
127+ | ` redux ` | 3.6.+ | Flux 風な状態/イベント概念をサポート |
128+ | ` react-router-redux ` | 4.0.+ | Redux の状態モデルに対応した react-router |
129+ | ` material-ui ` | 0.17.+ | マテリアルデザインな UI ライブラリ |
120130| ` lodash ` | 4.17.+ | 汎用ユーティリティライブラリ |
121131| ` dateformat ` | 2.0.+ | 日時ライブラリ |
122- | ` jquery ` | 3.1.+ | DOM 操作サポート |
123- | ` bootstrap-sass ` | 3.3.+ | CSS フレームワーク |
124- | ` fontawesome ` | 4.6.+ | フォントアイコンライブラリ |
132+ | ` superagent ` | 2.3.+ | HTTP 連携ライブラリ |
125133
126134### License
127135
0 commit comments