SlideShare a Scribd company logo
1 of 46
Download to read offline
다같이 React를 이해해 봅시다.
리액트 소개
이재민
2018년 9월
2018
자바스크립트로 대규모 애플리케이션을 개발할 수 있게 되었다.
1995
MVC, MVVM, MVM .
대부분 Model과 View로 이루어진 프레임워크
JSON data HTML
likes를 1에서 2로 바꾼다면?
JSON data HTML
data를 변경하는 로직 DOM에 반영하는 로직(Mutate)
JSON data HTML
규모가 커진다면?
구조가 복잡하다면?
제대로 관리를 못한다면?
그런데...
만약 Ju-eun에게서 메시지가 온다면?
4개 요소이상의 View 반영..
View를 관리하는것이
점점 힘들어진다...
과거의 DOM
새로운 데이터로
새로 만든 새로운 DOM
아주 간단한 원리
더 이상 어떻게 View를 반영할지
고민할 필요가 없다!
그런데 과연 이것이 효율적일까..?
CPU 점유율도 높아지고...
메모리도 많이 들어가고..
리엑트에 대한 이해가 필요
component
component template
!==
타 프레임워크의 template과는 다른 개념!
template HTML Markup 문자열 반환…
template은…
하지만 component는
조금더 복잡하다.
component
컴포넌트의 생김새
컴포넌트의 동작 방식
component
component
렌더링
Browser
초기 렌더링
리 렌더링
두개의 랜더링이 존재한다.
render() { }
초기 렌더링
render함수로 렌더링 시작
render() { }
초기 렌더링
render함수로 렌더링 시작
컴포넌트의 생김새
컴포넌트의 동작 방식
최상위 컴포넌트 해석
render() { }
초기 렌더링
render함수로 렌더링 시작
최상위 컴포넌트 해석
자식 컴포넌트를 재귀 해석
초기 렌더링
자식 컴포넌트를 재귀 해석
HTML 마크업 작성
DOM에 HTML 주입
리 렌더링(조화단계)
데이터 변경시 리렌더링 시작
리 렌더링(조화단계)
초기 렌더링과 같은 방식으로 트리 작성
리 렌더링(조화단계)
현재 렌더링 트리 리 렌더링 트리
초기 렌더링 트리와 리 렌더링 트리를 비교
리 렌더링(조화단계)
현재 렌더링 트리 리 렌더링 트리
변경된 부분만 변경
Virtual DOM
DOM
Document Object Model
DOM
Document Object Model
트리 구조로 작성되며 원하는 node 를 선택적으로 제어 가능
그럼 왜 Virtual DOM 을 사용할까?
그럼 왜 Virtual DOM 을 사용할까?
DOM은 느린가?
그럼 왜 Virtual DOM 을 사용할까?
DOM은 느린가?
DOM자체의 속도는 JS 속도와 큰 차이가 없다.
그럼 왜 Virtual DOM 을 사용할까?
DOM은 느린가?
DOM자체의 속도는 JS 속도와 큰 차이가 없다.
But!,
그럼 왜 Virtual DOM 을 사용할까?
DOM은 느린가?
DOM자체의 속도는 JS 속도와 큰 차이가 없다.
But!,
동적 UI구현시 너무 많은 연산 및 리페인팅 시간 허비
Virtual DOM은 최소한의 처리와 효율을 위한
DOM을 Javascript로 추상화한 객체
Virtual DOM을 이용한 DOM 업데이트 단계
Virtual DOM을 이용한 DOM 업데이트 단계
1. 데이터를 업데이트 하면 전체 UI를 Virtual DOM 에 리 렌더링
Virtual DOM을 이용한 DOM 업데이트 단계
1. 데이터를 업데이트 하면 전체 UI를 Virtual DOM 에 리 렌더링
2. 이전 Virtual DOM에 있던 내용과 현재내용을 비교
Virtual DOM을 이용한 DOM 업데이트 단계
1. 데이터를 업데이트 하면 전체 UI를 Virtual DOM 에 리 렌더링
2. 이전 Virtual DOM에 있던 내용과 현재 내용을 비교
3. 바뀐 부분만 실제 DOM에 적용
우리는 다음 문제를 해결하기 위해 리엑트를 만들었습니다
지속적으로 데이터가 변화하는 대규모 애플리케이션 구축하기
-리엑트 메뉴얼-

More Related Content

What's hot

이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016devCAT Studio, NEXON
 
CSS3 천기누설
CSS3 천기누설CSS3 천기누설
CSS3 천기누설Toby Yun
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장JeongBong Kim
 
잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표Seokmin No
 
킴스큐스팍 Vm 보안설정하기 mysql root비밀번호 변경
킴스큐스팍 Vm 보안설정하기 mysql root비밀번호 변경킴스큐스팍 Vm 보안설정하기 mysql root비밀번호 변경
킴스큐스팍 Vm 보안설정하기 mysql root비밀번호 변경Gitaek kwon
 
사투리 SMS 서비스 기획안
사투리 SMS 서비스 기획안사투리 SMS 서비스 기획안
사투리 SMS 서비스 기획안Seung Min Shin
 
비개발자를 위한 Javascript 알아가기 #4.1
비개발자를 위한 Javascript 알아가기 #4.1비개발자를 위한 Javascript 알아가기 #4.1
비개발자를 위한 Javascript 알아가기 #4.1민태 김
 
[D2 campus]착 하면 척! chak 서비스 개발기
[D2 campus]착 하면 척! chak 서비스 개발기[D2 campus]착 하면 척! chak 서비스 개발기
[D2 campus]착 하면 척! chak 서비스 개발기NAVER D2
 
서블릿(servlet)
서블릿(servlet)서블릿(servlet)
서블릿(servlet)JungHoon Lee
 

What's hot (12)

이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
 
5.ref 101
5.ref 1015.ref 101
5.ref 101
 
20201223 jquery
20201223 jquery20201223 jquery
20201223 jquery
 
Mean stack Start
Mean stack StartMean stack Start
Mean stack Start
 
CSS3 천기누설
CSS3 천기누설CSS3 천기누설
CSS3 천기누설
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장
 
잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표
 
킴스큐스팍 Vm 보안설정하기 mysql root비밀번호 변경
킴스큐스팍 Vm 보안설정하기 mysql root비밀번호 변경킴스큐스팍 Vm 보안설정하기 mysql root비밀번호 변경
킴스큐스팍 Vm 보안설정하기 mysql root비밀번호 변경
 
사투리 SMS 서비스 기획안
사투리 SMS 서비스 기획안사투리 SMS 서비스 기획안
사투리 SMS 서비스 기획안
 
비개발자를 위한 Javascript 알아가기 #4.1
비개발자를 위한 Javascript 알아가기 #4.1비개발자를 위한 Javascript 알아가기 #4.1
비개발자를 위한 Javascript 알아가기 #4.1
 
[D2 campus]착 하면 척! chak 서비스 개발기
[D2 campus]착 하면 척! chak 서비스 개발기[D2 campus]착 하면 척! chak 서비스 개발기
[D2 campus]착 하면 척! chak 서비스 개발기
 
서블릿(servlet)
서블릿(servlet)서블릿(servlet)
서블릿(servlet)
 

Similar to 01 introduce-react-js

XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XpressEngine
 
코드잇-리액트-특강.pdf
코드잇-리액트-특강.pdf코드잇-리액트-특강.pdf
코드잇-리액트-특강.pdf이정환
 
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음DataUs
 
20170202 D2 발표
20170202 D2 발표20170202 D2 발표
20170202 D2 발표Suhjin Park
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기Taegon Kim
 
React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기WebFrameworks
 
Angular2 톺아보기
Angular2 톺아보기 Angular2 톺아보기
Angular2 톺아보기 철민 배
 
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문종훈 박
 
LucideWorks Banana 소개
LucideWorks Banana 소개 LucideWorks Banana 소개
LucideWorks Banana 소개 SuHyun Jeon
 
이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf이정환
 
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지CONNECT FOUNDATION
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Sa-ryong Kang
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신현욱 김
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017devCAT Studio, NEXON
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션흥배 최
 
[경북] I'mcloud openlight
[경북] I'mcloud openlight[경북] I'mcloud openlight
[경북] I'mcloud openlightstartupkorea
 

Similar to 01 introduce-react-js (20)

XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
 
코드잇-리액트-특강.pdf
코드잇-리액트-특강.pdf코드잇-리액트-특강.pdf
코드잇-리액트-특강.pdf
 
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음
 
20170202 D2 발표
20170202 D2 발표20170202 D2 발표
20170202 D2 발표
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기
 
React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기
 
React
ReactReact
React
 
Angular2 톺아보기
Angular2 톺아보기 Angular2 톺아보기
Angular2 톺아보기
 
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
 
LucideWorks Banana 소개
LucideWorks Banana 소개 LucideWorks Banana 소개
LucideWorks Banana 소개
 
React js 1
React js   1React js   1
React js 1
 
이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf이정환_구름에듀_특강.pdf
이정환_구름에듀_특강.pdf
 
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지
[부스트캠프 웹・모바일 7기 Tech Talk]안병준_프론트엔드,어쩌다 여기까지
 
1.react 101
1.react 1011.react 101
1.react 101
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신
 
Virtual dom
Virtual domVirtual dom
Virtual dom
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
 
[경북] I'mcloud openlight
[경북] I'mcloud openlight[경북] I'mcloud openlight
[경북] I'mcloud openlight
 

More from Jay Lee

04 component
04 component04 component
04 componentJay Lee
 
02 install-react-js
02 install-react-js02 install-react-js
02 install-react-jsJay Lee
 
Codeveloper 개발기
Codeveloper 개발기Codeveloper 개발기
Codeveloper 개발기Jay Lee
 
Codeveloper
CodeveloperCodeveloper
CodeveloperJay Lee
 

More from Jay Lee (6)

Https
HttpsHttps
Https
 
04 component
04 component04 component
04 component
 
03 jsx
03 jsx03 jsx
03 jsx
 
02 install-react-js
02 install-react-js02 install-react-js
02 install-react-js
 
Codeveloper 개발기
Codeveloper 개발기Codeveloper 개발기
Codeveloper 개발기
 
Codeveloper
CodeveloperCodeveloper
Codeveloper
 

01 introduce-react-js