Submit Search
React を導入したフロントエンド開発
Download as PPTX, PDF
26 likes
60,906 views
D
daisuke-a-matsui
フレームワークを利用したシングルページアプリケーションの制御 GMOインターネット次世代システム研究室の勉強会発表資料。 2015年12月作成。 案件対応期間は2015年4月-8月。
Internet
Read more
1 of 69
Download now
Downloaded 46 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
More Related Content
PDF
RailsでReact.jsを動かしてみた話
yoshioka_cb
PDF
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
Kohei Asai
PPTX
今からでも遅くない! React事始め
ynaruta
PDF
なぜ人は必死でjQueryを捨てようとしているのか
Yoichi Toyota
PDF
SIROK技術勉強会 #1 「Reactってなんだ?」
Naoyuki Kataoka
PDF
Flux react現状確認会
VOYAGE GROUP
PDF
React.jsでクライアントサイドなWebアプリ入門
spring_raining
PPTX
20160927 reactmeetup
Naoki Kurosawa
RailsでReact.jsを動かしてみた話
yoshioka_cb
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
Kohei Asai
今からでも遅くない! React事始め
ynaruta
なぜ人は必死でjQueryを捨てようとしているのか
Yoichi Toyota
SIROK技術勉強会 #1 「Reactってなんだ?」
Naoyuki Kataoka
Flux react現状確認会
VOYAGE GROUP
React.jsでクライアントサイドなWebアプリ入門
spring_raining
20160927 reactmeetup
Naoki Kurosawa
What's hot
(20)
PDF
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
Yusuke Murata
PPTX
React.js + Reduxで作るSPA
Shohei Saeki
PPTX
Angular js はまりどころ
Ayumi Goto
PDF
React+TypeScriptもいいぞ
Mitsuru Ogawa
PDF
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
PDF
React.js + Flux
dsuke Takaoka
PDF
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
PDF
Isomorphic web development with scala and scala.js
TanUkkii
PDF
AngularJSの高速化
Kon Yuichi
PDF
まだ DOM 操作で消耗してるの?
Yuki Ishikawa
PDF
svelte と tailwind で始めるフロントエンド開発
Shuichi Takaya
PPTX
React NativeでTwitterクライアントを作ってみよう
dcubeio
PPTX
AngularJSを浅めに紹介します
nkazuki
PDF
Angular1&2
Kenichi Kanai
PDF
Enterprise x AngularJS
Kenichi Kanai
PDF
jQueryを中心としたJavaScript
hideaki honda
PDF
angular1脳で見るangular2
Moriyuki Arakawa
PDF
One Time Binding & Digest Loop
Kon Yuichi
PDF
AngularJSからReactに移ったケースの話
kumatch kumatch
PDF
AngularJSでの非同期処理の話
Yosuke Onoue
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
Yusuke Murata
React.js + Reduxで作るSPA
Shohei Saeki
Angular js はまりどころ
Ayumi Goto
React+TypeScriptもいいぞ
Mitsuru Ogawa
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
React.js + Flux
dsuke Takaoka
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
Isomorphic web development with scala and scala.js
TanUkkii
AngularJSの高速化
Kon Yuichi
まだ DOM 操作で消耗してるの?
Yuki Ishikawa
svelte と tailwind で始めるフロントエンド開発
Shuichi Takaya
React NativeでTwitterクライアントを作ってみよう
dcubeio
AngularJSを浅めに紹介します
nkazuki
Angular1&2
Kenichi Kanai
Enterprise x AngularJS
Kenichi Kanai
jQueryを中心としたJavaScript
hideaki honda
angular1脳で見るangular2
Moriyuki Arakawa
One Time Binding & Digest Loop
Kon Yuichi
AngularJSからReactに移ったケースの話
kumatch kumatch
AngularJSでの非同期処理の話
Yosuke Onoue
Ad
Similar to React を導入したフロントエンド開発
(20)
PDF
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
PDF
React Native GUIDE
dcubeio
PDF
Visualforce + jQuery
Salesforce Developers Japan
PPTX
20200304 vuejs
yamamotomsc
PDF
AppiumのWebViewアプリテストの仕組みとハマりどころ
Masayuki Wakizaka
PPTX
React+redux+saga 02
TIS Inc
PDF
Testing react-native with storybook on web
Jesse Katsumata
PDF
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Toshiyuki Ienaga
PDF
Jqm20120804 publish
Takashi Okamoto
PDF
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
Takashi Okamoto
PDF
図とコード例で多分わかる React と flux (工事中)
Teloo
PDF
【ネイティブアドを支えるPhantomJS】
Kengo Shimada
PPTX
SYSTEMI勉強会まとめ資料(日記アプリ作成)
YoshikiWatanabe1
PDF
ReactJSの開発導入について
Riki Kenmochi
PDF
jQuery と MVC で実践する標準志向 Web 開発
Akira Inoue
PDF
Storybook web-and-circleci
Jesse Katsumata
PDF
JSUG勉強会 2018年その5 Spring I/O 報告会
Alisa Sasaki
PDF
ソーシャルアプリ勉強会(第一回資料)配布用
Yatabe Terumasa
PPT
Struts2を始めよう!
Shinpei Ohtani
PDF
Study Intro Backbone
Gensei Kawasaki
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
React Native GUIDE
dcubeio
Visualforce + jQuery
Salesforce Developers Japan
20200304 vuejs
yamamotomsc
AppiumのWebViewアプリテストの仕組みとハマりどころ
Masayuki Wakizaka
React+redux+saga 02
TIS Inc
Testing react-native with storybook on web
Jesse Katsumata
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Toshiyuki Ienaga
Jqm20120804 publish
Takashi Okamoto
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
Takashi Okamoto
図とコード例で多分わかる React と flux (工事中)
Teloo
【ネイティブアドを支えるPhantomJS】
Kengo Shimada
SYSTEMI勉強会まとめ資料(日記アプリ作成)
YoshikiWatanabe1
ReactJSの開発導入について
Riki Kenmochi
jQuery と MVC で実践する標準志向 Web 開発
Akira Inoue
Storybook web-and-circleci
Jesse Katsumata
JSUG勉強会 2018年その5 Spring I/O 報告会
Alisa Sasaki
ソーシャルアプリ勉強会(第一回資料)配布用
Yatabe Terumasa
Struts2を始めよう!
Shinpei Ohtani
Study Intro Backbone
Gensei Kawasaki
Ad
React を導入したフロントエンド開発
1.
React を導入した フロントエンド開発 ~フレームワークを利用した シングルページアプリケーションの制御~ 2015.12 GMOインターネット 次世代システム研究室 松井 大介
2.
管理画面のフロントエンドに Reactを導入したっていう話です。
3.
アジェンダ • 絶対王者 Angular
vs 挑戦者 React • React での SPA 設計 1.コンポーネントを分ける 2.ReactRouter 3.jQuery との共存
4.
アジェンダ • 絶対王者 Angular
vs 挑戦者 React • React での SPA 設計 1.コンポーネントを分ける 2.ReactRouter 3.jQuery との共存
5.
GMOスマートリザーブの ご紹介
6.
飲食店向け予約一元管理
8.
2015年4月-8月 次世代システムが サービス立ち上げを 支援しました
9.
【日本】 マネージャー 1名 ベトナムブリッジ 1名 【ベトナム】 ベトナム
3名
10.
デモ
11.
フロントエンド 実装期間1ヶ月弱
12.
システムの特徴 • バックエンド データ操作用 API
サーバを用意。 (外部連携を意図) • 管理画面= フロントエンドだけ 1. JS による SPA から API を叩く。 2. 管理画面なので そこまで厳しいパフォーマンス要件はない
13.
SPA シングルページアプリケーション 1.HTML のレンダリングを 全てクライアントサイドでやる! 2.サーバにアクセスするのはAPIで データ取得・保存するときだけ!
14.
SPA シングルページアプリケーション 1.HTML のレンダリングを 全てクライアントサイドでやる! 2.サーバにアクセスするのはAPIで データ取得・保存するときだけ! ここぞとばかりに 新しい JSフレームワーク 使いたい!!!
15.
JS フレームワーク戦国時代
16.
Googleトレンド https://www.google.co.jp/trends/explore#q=angular%20js%2C%20backbone%20js%2 C%20react%20js&cmpt=q&tz=Etc%2FGMT-9
18.
絶対王者 Angular • Google
が開発 • 高機能 フロントエンドMVC全部盛り 双方向データバインディング ヴァリデーションとか全自動機能多い • HTML拡張 デザイナーでも見やすい
20.
React が注目された理由 • Facebook
/ Instagram で開発+利用 • 双方向データバインディングに対する懐疑 (高機能すぎて複雑、処理が重い)
21.
React の斬新なコンセプト • VirtualDOM 1.実装者は仮想のDOMを記述 2.React
は変更発生した場合仮想DOMの 差分を確認し、リアルDOMを更新 ⇒ 軽量な描画コスト • 一方向なデータフロー かならず同じ順序で処理される。 状態が変わるたびに再描画される。 ⇒ 保守しやすい
22.
React でできること • 画面描画処理の統一化 React
のライフサイクルに合わせて描画 • 画面パーツのコンポーネント化 共通のパーツ整理
23.
描画パフォーマンス https://www.codementor.io/reactjs/tutorial/reactjs-vs-angular-js-performance- comparison-knockout
24.
比較項目 Angular React 機能
高機能 管理画面構築は 非常に楽。 実装が必要 デザイナー親和性 高 基本HTML 低 JSX+カスタムタグは 読みづらい パフォーマンス 低 高 将来性 1系×(打ち切り) 2系?? 枯れてない。 どんどん変わる。 好み もりもりすぎなん じゃないの? 一方向なデータフロー が読みやすい!
25.
学習の平易さを優先し React 採用しました★
26.
React での SPA
設計
27.
アジェンダ • 絶対王者 Angular
vs 挑戦者 React • React での SPA 設計 1.コンポーネントを分ける 2.ReactRouter 3.jQuery との共存
28.
画面パーツを React コンポーネント化
29.
React での設計ポイント • 画面パーツをコンポーネントにする。 •
親コンポーネント子コンポーネントで 値の受け渡し+イベントを整理する。
30.
DaySelect コンポーネント TableSchedule コンポーネント ReservationFooterコンポーネント
31.
Modal コンポーネント ReserveForm コンポーネント
32.
var HomeScreen =
React.createClass(){ render : function() {return <div> <DaySelect/> <TableSchedule/> <ReservationFooter/> <Modal> <ReserveForm/> </Modal> </div>})..}; JSX+コンポーネントタグ =JS内のrender()中に HTMLと独自タグを記述
33.
var DaySelect =
React.createClass(){ //初期化 getInitialState(){...}, //描画前 componentWillMount() {...}, //描画 render() {...}, //描画後 componentDidMount() {...}, //クリックイベント onClickBotton() {...} }
34.
http://qiita.com/kawachi/items/092bfc281f88e3a6e456
35.
http://qiita.com/kawachi/items/092bfc281f88e3a6e456 ライフサイクルさえ 把握すればReact を制したも同然
36.
TableSchedule コンポーネント 予約時間を クリック
37.
var HomeScreen =
React.createClass(){ render : function() {return <div> <DaySelect/> <TableSchedule onClickReservation={this.onClickReservation}/> <ReservationFooter/> <Modal> <ReserveForm/> </Modal>
38.
var HomeScreen =
React.createClass({ onClickReservation: function(reservation) { this.setState({ inputReservation: reservation, isModalOpen: true, doneButtonName:‘予約修正’, cancelButtonName:'予約取消' }); }, setState() ⇒再描画
39.
ReserveForm コンポーネント 修正ボタン クリック
40.
var HomeScreen =
React.createClass(){ render : function() {return <div> <DaySelect/> <TableSchedule onClickReservation={this.onClickReservation}/> <ReservationFooter/> <Modal> <ReserveForm onDone={this.updateReservation}/> </Modal> </div>})..};
41.
updateReservation: function(reservation) { request.post(apiHost +
‘/shops/’ + this.props.shopId + ‘/reservations’) .query({token:accessToken}) .send(query) .end(function (err, res) { //保存完了したら戻る処理 }; }; ※request オブジェクトは superagent.js をラップ
42.
React コンポーネント理解のポイント • ライフサイクルメソッドで生成される! •
setState() で再描画される!
43.
React Router
44.
React Router • ルーティングライブラリ •
URL と Reactコンポーネントの対応定義 • ヘッダー、サイドバー、フッターの共通化
45.
SPA=1画面制御 ログイン画面 ホーム画面 週間スケジュール 画面 すべて app.js
からRouting される
46.
ログイン画面 login_screen 予約ページフッター reservation_footer 週間スケジュール week_schedule ホーム画面 home_screen メニューヘッダー menu_header メニューヘッダー menu_header 予約ページフッター reservation_footer すべて app.js からRouting
される
47.
<Route name="app" path="/"
handler={App}> <Route name="home" path="/shops/:shopId“ handler={HomeScreen}/> <Route name="weekSchedule“ path="/shops/:shopId/week_schedule“ handler={WeekScheduleScreen}/> <Route name="login" path="/" handler={LoginScreen}/> <DefaultRoute handler={LoginScreen}/> </Route> 一元管理
48.
jQuery との共存
49.
jQuery UI Datepicker
50.
jQuery UI Datepicker 普通に使うと 動かない!
51.
jQuery 初期化は画面描画時 <script> //画面描画後に呼ばれる jQuery
の処理 $(document).ready(function(){ // datepckr に機能をバインドする $("#datepckr").datepicker(); }); </script> <input type="text" id="datepckr" />
52.
React は setState
で何度も再描画 getInitialState : 初期化時に1回だけ componentWillMount : render 前処理 render : 描画処理 componentDidMount : render 後処理 componentWillUpdate : State 変更後 render の前 componentDidUpdate : State 変更後 componentWillUnmount :コンポーネント削除前 =クリックイベント処理のバインドが外れてしまう
53.
http://qiita.com/kawachi/items/092bfc281f88e3a6e456
54.
render 直後であれば DOM
操作可能 getInitialState : 初期化時に1回だけ componentWillMount : render 前処理 render : 描画処理 componentDidMount : render 後処理 componentWillUpdate : State 変更後 render の前 componentDidUpdate : State 変更後 componentWillUnmount :コンポーネント削除前
55.
componentDidMount: function ()
{ self = this; $('.input-date').datepicker( { //Datepicker 初期化のための値 dateFormat: 'yy-mm-dd', //選択時のイベント処理 onSelect: function(dateVal) { //親コンポーネントに変数渡すなどの処理 } } ); }
56.
jQuery が data-reactid
を いじってしまうと 破壊されるので注意 <section data-reactid=".0.1.0.1"> <div data-reactid=".0.1.0.1.0"> <dl data-reactid=".0.1.0.1.0.0"> <dt data-reactid=".0.1.0.1.0.0.0">
57.
他にがんばったところ Canvas in React
58.
やらなかったこと • サーバサイドレンダリング 主にSPAのSEO対策用処置。 管理画面なのでSEO関係なかった。 • Flux 開発期間の都合であきらめた。 今後改善できる部分。
59.
まとめ • Angular もいいけど
React が平易そう • React での SPA 設計 1.コンポーネント化が基本 2.ReactRouterで統一的に画面遷移制御 3.jQuery との共存の方法は ライフサイクルを把握する
60.
ご清聴ありがとうございました
61.
アジェンダ • 絶対王者 Angular
vs 挑戦者 React • React での SPA 設計 1.コンポーネントを分ける 2.ReactRouter 3.jQuery との共存 • もうちょっとがんばれば Flux
62.
改善できそうなところ
63.
改善できるところ • もっと Flux
をやるなら
64.
良く見るFluxの図
65.
公式にあるFluxの図 (実はシンプル)
66.
• View = React
でつくった画面。 onClick などイベントがあればActionを呼ぶ。 • Action onClickなどのイベント処理の集約クラス。 イベントが発生したら Dispatcher を呼ぶ。 渡すデータのことをペイロードと呼ぶ。 • Dispatcher Actionからデータ(ペイロード)をもらって Store を操作 するクラス。 • Store Ajax や Localstorage などデータ取得・保存系の処理を行 うクラス。
67.
結局Fluxとは 一方向MVC • Model ≒
Store • View = View • Controller ≒ Action + Dispatcher ※厳密には違うが、理解の取っ掛かりに
68.
流れは一方向
69.
Fluxに変更する上で必要なこと たとえば HomeScreen コンポーネントなら 画面描画系
⇒ React コンポーネント (いままで通り) イベント系 onClickReservation ⇒ Action クラスへ 保存イベント系 onSave ⇒ Action + Dispatcher クラスへ 保存処理 request.post (ajax) ⇒ Store クラスへ
Download