SlideShare a Scribd company logo
1 of 20
Flux 예제 분석 2
쇼핑 카트
by peter_yun
목차
● Flux 애플리케이션 구조
● index.html & package.json
● Dispatcher 만들기
● Action Type & Action Creator
● Store
● Controller View
● Mock Data 테스트
● 정리
Flux 애플리케이션 구조
components
stores
dispatcher
actions
constants
ProductData
utils/CartAPI
Flux 애플리케이션 구조
http://react-flux-cart.scotch.io/
CartApp
Catalog
Cart
index.html & package.json
Production
● react : reactjs
● flux : dispatcher from FB
Development
● browserify 안에 reactify 통해 reactjs의 jsx 변환
● watchify
Script
● npm start : src/bundle.js 생성
● npm build
not use grunt/gulp
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Flux Cart</title>
<link rel="stylesheet" href="css/app.css">
</head>
<body>
<section id="flux-cart"></section>
<script src="js/bundle.js"></script>
</body>
</html>
Dispatcher 만들기
● npm install flux
● Dispatcher는 중앙 허브
o dispatch : payload 전파
o register : payload 받기
payload = ActionType + Data
Action Creator
● Action Creator를 생성
○ View에서 호출 할 Public Domain Function (PDF)
○ payload 생성
○ Dispatcher.dispatch에 payload 전파 의뢰
● Action Type 정의
Action Creator 흐름도
Action Creator
PAYLOAD 생
성View
PDF
PAYLOAD 전파 의뢰
Store
● 데이터 상태 저장
● 데이터 set은 private 구성
o Dispatcher.register를 통해 Action type을 받아 set 함
● View로 payload 전송은 event 이용
o NodeJS EventEmitter
● 데이터 get은 public 구성
o View에서 get 하고 setState 함
Store - private set
private set data 영역
Dispatcher가 dispatch 한
payload를 받아 private set 호출을 위한
Dispatcher의 register에 콜백 등록
use
private set data 하면 change
이벤트 발생
Store - payload 전송
Store에서 private set 이 호출되
면
change 이벤트를 전송한다.
change 이벤트를 받아 실행할
callback을 View에서 등록한다.
module.exports 하여 View 에서
public get data 할 영역
Store - set/get 그리고 event 흐름도
set data
get dataevent
Controller View
● Controller View는 Store의 변경을 감지(Listen)하고, Store 의 public
get 통해 변경 데이터를 가져온다.
● 가져온 데이터는 setState 통해 this.state 최신 상태를 유지
● this.props 통해 Child Component에 데이터를 아래로 내려줌
Controller View
View Component Lifecycle 통해
Store 이벤트 Listen/Remove
this.setState 호출 최신 상태 유
지
Store 이벤트를 받으면 Store의
public get data를 호출
Controller View 흐름도
public get dataevent listen
setState 최
신상태유지
child component는
props 통해 데이터 전달
Child View
● Action Creator를 짝사랑한다.
o UI 이벤트 발생시 호출
● this.props 만 편식한다.
o UI 렌더링 데이터
Mock Data 테스트
app.js
Mock Data
셋팅
정리
● Flux 단방향은 data set 이 단방향이라는 말씀 !!!
● Dispatcher는 payload 받고 전달하는 중앙 허브
● Action Creator는 payload 생성자
● Store은 payload를 받아 모든 View에 payload 전달
● Controller View는 부모 Component로 최신 state 유지
● 자식 View Component는 this.props를 이용하고, 이벤트 발생시 Action Creator
호출
● 참조
https://scotch.io/tutorials/creating-a-simple-shopping-cart-with-react-js-and-flux#api-&-mock-data
https://scotch.io/tutorials/getting-to-know-flux-the-react-js-architecture
실전 프로젝트로 배우는 AngularJS
많이 사보세요. ^^
그러면 ReactJS가
곧 출간됩니다…..

More Related Content

What's hot

Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVCArawn Park
 
React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작Taegon Kim
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs근호 최
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)DK Lee
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee dockerDK Lee
 
다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!우영 주
 
Couchbase .net client 개발
Couchbase .net client 개발Couchbase .net client 개발
Couchbase .net client 개발jr p
 
React 튜토리얼 2차시
React 튜토리얼 2차시React 튜토리얼 2차시
React 튜토리얼 2차시태현 김
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래JeongHun Byeon
 
React 튜토리얼 1차시
React 튜토리얼 1차시React 튜토리얼 1차시
React 튜토리얼 1차시태현 김
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)DK Lee
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리YoungHeon (Roy) Kim
 
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기DoHyun Jung
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XpressEngine
 
Node.js
Node.jsNode.js
Node.jsymtech
 
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Jay Park
 
SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기Myung Woon Oh
 

What's hot (20)

Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
 
React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee docker
 
다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!
 
Couchbase .net client 개발
Couchbase .net client 개발Couchbase .net client 개발
Couchbase .net client 개발
 
React 튜토리얼 2차시
React 튜토리얼 2차시React 튜토리얼 2차시
React 튜토리얼 2차시
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래
 
React 튜토리얼 1차시
React 튜토리얼 1차시React 튜토리얼 1차시
React 튜토리얼 1차시
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
How to Grunt.js
How to Grunt.jsHow to Grunt.js
How to Grunt.js
 
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
 
Node.js
Node.jsNode.js
Node.js
 
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발
 
SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기
 
Vert.x
Vert.xVert.x
Vert.x
 

Similar to Flux 예제 분석 2

Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사Rjs Ryu
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912Yooseok Choi
 
2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디
2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디
2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디Youngbin Han
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with SpringKeesun Baik
 
React 실무활용 이야기
React 실무활용 이야기React 실무활용 이야기
React 실무활용 이야기철민 배
 
Vue.js 기초 실습.pptx
Vue.js 기초 실습.pptxVue.js 기초 실습.pptx
Vue.js 기초 실습.pptxwonyong hwang
 
[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리구 봉
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Jemin Huh
 
04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)Hankyo
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축Youngil Cho
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
RHQ 공감 Seminar 6th
RHQ 공감 Seminar 6thRHQ 공감 Seminar 6th
RHQ 공감 Seminar 6thTed Won
 
Meteor React Tutorial 따라하기
Meteor React Tutorial 따라하기Meteor React Tutorial 따라하기
Meteor React Tutorial 따라하기Jiam Seo
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트Keesun Baik
 

Similar to Flux 예제 분석 2 (20)

Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
 
2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디
2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디
2.Connect Sunshine to the Cloud - 시온고 안드로이드 스터디
 
Spring boot actuator
Spring boot   actuatorSpring boot   actuator
Spring boot actuator
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with Spring
 
React 실무활용 이야기
React 실무활용 이야기React 실무활용 이야기
React 실무활용 이야기
 
Springmvc
SpringmvcSpringmvc
Springmvc
 
Vue.js 기초 실습.pptx
Vue.js 기초 실습.pptxVue.js 기초 실습.pptx
Vue.js 기초 실습.pptx
 
[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리[웹기반시스템 3조]e govframe 중간고사 제출 정리
[웹기반시스템 3조]e govframe 중간고사 제출 정리
 
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
 
04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)04.실행환경 교육교재(화면처리)
04.실행환경 교육교재(화면처리)
 
One-day-codelab
One-day-codelabOne-day-codelab
One-day-codelab
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
okspring3x
okspring3xokspring3x
okspring3x
 
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
2017 Pycon KR - Django/AWS 를 이용한 쇼핑몰 서비스 구축
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
RHQ 공감 Seminar 6th
RHQ 공감 Seminar 6thRHQ 공감 Seminar 6th
RHQ 공감 Seminar 6th
 
Meteor React Tutorial 따라하기
Meteor React Tutorial 따라하기Meteor React Tutorial 따라하기
Meteor React Tutorial 따라하기
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트
 

Flux 예제 분석 2

  • 1. Flux 예제 분석 2 쇼핑 카트 by peter_yun
  • 2. 목차 ● Flux 애플리케이션 구조 ● index.html & package.json ● Dispatcher 만들기 ● Action Type & Action Creator ● Store ● Controller View ● Mock Data 테스트 ● 정리
  • 5. index.html & package.json Production ● react : reactjs ● flux : dispatcher from FB Development ● browserify 안에 reactify 통해 reactjs의 jsx 변환 ● watchify Script ● npm start : src/bundle.js 생성 ● npm build not use grunt/gulp
  • 6. index.html <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Flux Cart</title> <link rel="stylesheet" href="css/app.css"> </head> <body> <section id="flux-cart"></section> <script src="js/bundle.js"></script> </body> </html>
  • 7. Dispatcher 만들기 ● npm install flux ● Dispatcher는 중앙 허브 o dispatch : payload 전파 o register : payload 받기 payload = ActionType + Data
  • 8. Action Creator ● Action Creator를 생성 ○ View에서 호출 할 Public Domain Function (PDF) ○ payload 생성 ○ Dispatcher.dispatch에 payload 전파 의뢰 ● Action Type 정의
  • 9. Action Creator 흐름도 Action Creator PAYLOAD 생 성View PDF PAYLOAD 전파 의뢰
  • 10. Store ● 데이터 상태 저장 ● 데이터 set은 private 구성 o Dispatcher.register를 통해 Action type을 받아 set 함 ● View로 payload 전송은 event 이용 o NodeJS EventEmitter ● 데이터 get은 public 구성 o View에서 get 하고 setState 함
  • 11. Store - private set private set data 영역 Dispatcher가 dispatch 한 payload를 받아 private set 호출을 위한 Dispatcher의 register에 콜백 등록 use private set data 하면 change 이벤트 발생
  • 12. Store - payload 전송 Store에서 private set 이 호출되 면 change 이벤트를 전송한다. change 이벤트를 받아 실행할 callback을 View에서 등록한다. module.exports 하여 View 에서 public get data 할 영역
  • 13. Store - set/get 그리고 event 흐름도 set data get dataevent
  • 14. Controller View ● Controller View는 Store의 변경을 감지(Listen)하고, Store 의 public get 통해 변경 데이터를 가져온다. ● 가져온 데이터는 setState 통해 this.state 최신 상태를 유지 ● this.props 통해 Child Component에 데이터를 아래로 내려줌
  • 15. Controller View View Component Lifecycle 통해 Store 이벤트 Listen/Remove this.setState 호출 최신 상태 유 지 Store 이벤트를 받으면 Store의 public get data를 호출
  • 16. Controller View 흐름도 public get dataevent listen setState 최 신상태유지 child component는 props 통해 데이터 전달
  • 17. Child View ● Action Creator를 짝사랑한다. o UI 이벤트 발생시 호출 ● this.props 만 편식한다. o UI 렌더링 데이터
  • 19. 정리 ● Flux 단방향은 data set 이 단방향이라는 말씀 !!! ● Dispatcher는 payload 받고 전달하는 중앙 허브 ● Action Creator는 payload 생성자 ● Store은 payload를 받아 모든 View에 payload 전달 ● Controller View는 부모 Component로 최신 state 유지 ● 자식 View Component는 this.props를 이용하고, 이벤트 발생시 Action Creator 호출 ● 참조 https://scotch.io/tutorials/creating-a-simple-shopping-cart-with-react-js-and-flux#api-&-mock-data https://scotch.io/tutorials/getting-to-know-flux-the-react-js-architecture
  • 20. 실전 프로젝트로 배우는 AngularJS 많이 사보세요. ^^ 그러면 ReactJS가 곧 출간됩니다…..