일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 유효성검사
- 사기
- 특수문자
- 네이버페이사기
- 중고거래사기
- 마사지
- 중고나라
- 중고나라사기
- 세부
- 여행
- plugin
- 정규식
- 정직하게사세요
- REACT
- 스노쿨링
- 자동완성
- 삼성무선청소기제트
- 맛사지
- 스쿠버다이빙
- 구분
- JavaScript
- autocomplate
- 해외여행
- Hooks
- 막탄
- Webpack
- js
- ES6
- webpack.config.js
- Today
- Total
Ryu.log
[ React-Tutorial-01 ] React 란? 본문
01. React 란?
그 중 React는 'Component'라는 개념에 집중 되어있는 라이브러리이다. Component를 간단히 설명하자면, 데이터를 넣으면 지정한 UI를 조립하여 보여준다.
React의 생태계는 무진장 넓고 사용하는 곳도 많다. Npm이나 Yarn을 통하여 입맛대로 원하는 스택을 골라서 사용 가능하다.
02. Facebook이 React를 만든 이유
페이스북이 React를 만들기 전에도, 이미 Angular, Backbone, Knockout, Ember 등의 수많은 프레임워크 들이 존재했다.
그리고 해당 프레임워크 들은
데이터단을 담당하는 모델(Model)
사용자의 화면에 보여지게 되는 뷰(View)
사용자가 발생시키는 이벤트를 처리해주는 컨트롤러(Controller)
이 세가지로 이루어진 MVC 패턴으로 이뤄져 있다.
위에 언급된 프레임워크의 공통통점은 모델이다. 프레임워크의 대부분은 양방향 바인딩을 통해 모델에 있는 값이 변경되면
뷰에서도 이를 변경시켜준다. 일단 첫 화면을 보여주고, 변화에 따라 필요한 부분을 바꿔주는 셈이다.
상당히 복작한 작업이다. 특정 이벤트가 발생되면, 모델에 변화를 일으키고, 변화를 일으킴에 따라 어떤 DOM을 가져온 뒤에
어떤 뷰를 업데이트 해줄지 로직을 정해줘야 하는데 Facebook에서는 리엑트를 만들기전 색다른 발상을 하였다.
"그냥 변화를 주지말자. 그 대신, 모델이 바뀌면 뷰를 다 날려버리고 새로 만들어버리면 어떨까?"
이렇게 되면 정말 간단해진다.
하지만 브라우저가 게임엔진도아니고 DOM기반으로 작동되는 페이지를 그때그때 새로 뷰를 만들어 버린다고하면 성능적으로 엄청난 문제가 생길것이다.
그리하여 사용하는게 바로 Virtual DOM이다
Virtual DOM은 가상의 돔이다. 변화가 일어나면, 실제로 브라우저의 DOM에 새로운 것을 넣는것이 아니라, JavaScript로 이루어진 Virtual DOM에 한번 랜더링을 하고,
기존의 DOM과 비교를 한 뒤 변화가 일어난 부분만 업데이트를 해주는 것이다.
이 Virtual DOM을 사용함으로서, 데이터가 변경되면 어떻게 업데이트를 할 지를 고려하는것이 아니라, 그냥 일단 바뀐 데이터로 그려놓고 비교를 한 뒤에,
바뀐부분만 찾아서 바꿔주는 것이다.
03. React를 특별하게 만드는 점은?
Airbnb, BBC, Cloudflare, Codecademy, Coursera, Dailymotion, eBay, Twitch, Walmart, Yahoo…. 등등등등등등..... 정말 수많은 곳에서 사용되고 있다.
3. 한번 사용해보면 좋아하게 된다.
통계적으로 React를 사용한 14689명에게 설문 조사를 했을 때 1020명을 제외한 나머지는 React를 다시 사용할 의향이 있다고 나온다. (약 93%)
또한 2017년 가장 사랑을 많이 받은 라이브러리 이기도 하다.
이 글은 Velopert님의 블로그에서 React 포스팅을보며 실습하며 공부한 자료입니다.
'Prev-content' 카테고리의 다른 글
[ React-Tutorial-03 ] JSX (0) | 2018.05.25 |
---|---|
[ React-Tutorial-02 ] React 프로젝트 시작 (0) | 2018.05.24 |
[ECMAScript6] - Rest 파라미터 (0) | 2018.03.12 |
[ECMAScript6] - Arrow function 화살표 함수 (0) | 2018.02.13 |
[ECMAScript6] - Template Literals 템플릿 리터럴 (0) | 2018.02.13 |