Angular、React、Vue.js(あとRiot.js)と揃い踏み、苛烈を極めるフロントエンド界隈、皆様いかがお過ごしでしょうか。
私はちょうど1年ほど前に新調した名刺に「フロントエンドエンジニア」と書いてはみたもののすっかり苦しくなってきた昨今です。
残り60枚程度頑張りますモロ(@moro_is)です。
厳冬の候、この記事はReact #1 Advent Calendar 2017、8日目の記事です。
この記事では、
- イマドキだからReactやってみたい
- でも全然下地的な知識はない
- ToDoアプリはもうわかったからもうちょい実用的なことしたい
私がざっくばらんに進捗をご報告いたします。
ご指導ご鞭撻のほどよろしくお願いいたします。
https://github.com/moroi/react-wordpress
やりたいこと
React + Redux + WordPress REST API + etc
を使って、WordPressでありがちなブログ(メディア)を作る- 記事一覧
- カテゴリー一覧
- タグ一覧
- 検索結果一覧
- ランキング一覧
- メニュー
- 他
- イマドキっぽいもの(CSS in JSとかSSRとか)には積極的に飛びつく
- 頑張って実用レベルまで持っていく
まずは環境構築
まずはスタンダードなNginx + Node.js
構成のサーバーを用意します。
React側のあれこれ
$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
Node.jsをインストールするのに必要なパッケージをインストールする。
$ sudo yum install -y gcc-c++ make
Node.js 6.xのYum Repositoryを追加する。
$ curl -sL https://rpm.nodesource.com/setup_6.x | sudo bash -
Node.jsをインストール。
$ sudo yum install -y nodejs
バージョンを確認。
$ node -v
v6.12.1
$ npm -v
3.10.10
Create React Appをインストール。
$ npm install -g create-react-app
Create React Appでアプリを作る。
$ mkdir /home/react
$ cd /home/react
$ create-react-app example.com
$ cd example.com
Create React Appを動かす。
$ npm start
Compiled successfully!
You can now view example.com in the browser.
http://localhost:3000/
Note that the development build is not optimized.
To create a production build, use npm run build.
よさそう。 一旦Ctrl+C
で停止。
Webサーバー側のあれこれ
ファイアウォールの状態を確認。
$ firewall-cmd --list-all
Reactが使う3000ポートを開放。
$ firewall-cmd --add-port=3000/tcp --zone=public
$ firewall-cmd --add-service=http --zone=public
と、永続化。
$ firewall-cmd --add-port=3000/tcp --permanent --zone=public
$ firewall-cmd --add-service=http --zone=public --permanent
ファイアウォールを再起動して設定を反映。
$ firewall-cmd --reload
Nginxを入れる。
$ vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
$ sudo yum -y --enablerepo=nginx install nginx
Nginxのバージョンを確認。
$ nginx -v
nginx version: nginx/1.12.2
Nginxの設定。
$ mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/example.com.conf
$ vi /etc/nginx/conf.d/example.com.conf
upstream nodejs {
ip_hash;
server localhost:3000;
}
server {
listen 80;
server_name xxx.xx.xxx.xx;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://nodejs;
}
}
Nginxを自動で起動するようにしつつ、再起動で設定を反映。
$ systemctl enable nginx
$ systemctl restart nginx
再びCreate React Appを動かす。
$ npm start
導入終わり!
再React側のあれこれ
「モダンな」って言ってしまったのでここからごにょごにょしていかなければなりません。 ので、Reactにいろいろ入れます。
yarnのほうがきっとモダンですが、npmのほうが情報が多そうなのでとりあえずnpmでやる。
$ npm install --save redux react-redux
$ npm install --save react-router react-router-redux react-router-dom
$ npm install --save redux-thunk redux-promise
$ npm install --save styled-components polished
$ npm install --save axios
$ npm install --save react-helmet
$ npm install --save redux react-redux react-router react-router-redux react-router-dom redux-thunk redux-promise styled-components polished axios react-helmet
$ vi package.json
{
"name": "example.com",
"version": "0.1.0",
"private": true,
"dependencies": {
"polished": "^1.9.0",
"react": "^16.2.0",
"react-dom": "^16.2.0",
"react-helmet": "^5.2.0",
"react-redux": "^5.0.6",
"react-router": "^4.2.0",
"react-router-dom": "^4.2.2",
"react-router-redux": "^4.0.8",
"react-scripts": "1.0.17",
"redux": "^3.7.2",
"redux-promise": "^0.5.3",
"redux-thunk": "^2.2.0",
"styled-components": "^2.2.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}
はい、あれこれ入れました。
https://github.com/moroi/react-wordpress
長くなりそうなので続きは次の記事で……!
参考
Github
- jackreichert/a-wp-react-redux-theme
- amine-benselim/wp-react-redux
- blivesta/wp-react-spa-boilerplate
- marekmelichar/react_redux_wordpress_theme
- andreystarkov/sovetsky
- henroben/wordpress-react-frontend
- //jovanidash21/wordpress-react-redux-theme-boilerplate
- vonkanehoffen/kanec-react-wordpress-theme
- DLCJianyf/ReactRedux
- berraknil/the-coffee-place
- ludovers/wp-react-redux
- christophwolff/scotty-wp
- maechabin/wp-node-react-theme
- ibogom/wordpress-react-redux-theme
- jovanidash21/wordpress-react-redux-theme-boilerplate
- wojciechkrzysztofik/faber-castell-react-redux-wp
- lamosty/lexi
Qiita
- たぶんこれが一番分かりやすいと思います React + Redux のフロー図解
- ざっくり React with Redux チュートリアル
- react-router@v4を使ってみよう:シンプルなtutorial
- React + Reduxアプリのディレクトリ構成について
- Redux入門 1日目 Reduxとは(公式ドキュメント和訳)
- Redux入門【ダイジェスト版】10分で理解するReduxの基礎
- 最小のReact+Redux
- styled-componentsの紹介
- ReactとReduxをES6で試す 実践編
- React における State と Props の違い
- Reduxのチュートリアルを試す環境を作るのにcreate-react-appを使う
- Stateless な React Component の記法をまとめてみた
- Facebook 公式ツール Create React App を使って React 開発の初歩を学ぶチュートリアル
- コードで理解するRedux(React使用)