1. Virtual DOM
Virtual DOM(가상 돔)은 어떤 상호작용이 일어났을 때 브라우저 DOM에 접근해서 반영하는 것이 아니라 가상돔(Virtual DOM)에 접근해서 변화가 필요한 곳만 렌더링한다.
즉, 가상 돔에서 변화가 필요한 곳만 확인해서 바꾼 후 렌더링하기 때문에 브라우저 DOM의 조작을 최소화해 성능 문제에 직결된다.
2. 컴포넌트 기반 화면 구성
기능과 역할에 따라 사용자가 독립적으로 관리가 가능하다
코드 재사용성이 좋다
3. View만 제공
리액트가 라이브러리라고 불리는 이유와 관련이 있따.
보통 프레임워크는 MVC라 하는데 리액트는 이중 View만 제공한다.
그렇게 때문에 라우팅은 react router, 상태 관리는 redux, 신흥강자recoil, MobX등을 사용해 관리한다.
4.JSX
진입장벽을 낮춰주는 것 같다. 리액트를 배우기 쉬운 이유이기도 한다
MVC는 Model, View, Controller의 약자이다.
하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지 역할로 구분한 패턴
Model
DATA, 정보들의 가공을 담당하는 컴포넌트
모델은 어플리케이션 정보, 데이터를 나타낸다. 데이타베이스, 처음의 정의하는 상수, 초기화 값, 변수 등을 뜻함.
비즈니스 로직을 처리후 모델의 변경사항을 컨트롤러와 뷰에 전달
규칙
Model은 자기 자신이 무엇을 수행할지만 알고 있고, 다른 컴포넌트들에 대해서는 알지 못한다.
사용자가 편집할 모든 데이터를 가지고 있어야 한다.
변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야한다.
Controller
데이터와 사용자인터페이스 요소들을 잇는 브릿지역할
사용자가 데이터를 클릭하고, 수정하는 것에 대한 이벤트들을 처리하는 부분을 뜻
규칙
Model이나 View에 대해서 알고 있어야한다.
Model이나 View의 변경을 모니터링 해야 한다.
View
사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다.
사용자 인터페이스 요소를 나타낸다.
규칙
Model이 가지고 있는 정보를 따로 저장해서는 안된다.
Model이나 Controller와 같이 다른 구성요소들을 몰라야 한다.
변경이 일어나면 변경 통지에 대한 처리방법을 구현해야 한다.
View와 Model 이 두가지를 제어하는 컨트롤로 구성된 하나의 애플리케이션은 각자 맡은일만 하면 된다.
우리가 컴포넌트를 재사용하게 만드는 이유가 무엇인가 ?
유지보수, 가독성과 같은 이유로 컴포넌트를 분리하는 것과 같은 원리와 마찬가지인 듯 하다.
'우리가 개발할 때 컴포넌트를 어떻게 효율적으로 나눌까? 기능일까? 매일 고민한다.
MVC는 그 고민의 결과로 도출된 하나의 해결책일 수 있다.'