Web Application이 발전하면서 규모가 커지고 이전의 방법으로는 코드를 개발하고 유지보수 하는 것이 어려워졌다.
그래서 이런 문제를 해결하기 위해 다양한 Frontend Framework(Library)가 등장하게 된다.
*프레임워크와 라이브러리의 차이
React는 페이스북에서 개발하고 관리하는 사용자 인터페이스(UI)를 만들기 위한 JavaScript 라이브러리다. 리액트와 같은 프론트엔드 라이브러리 혹은 프레임워크를 사용하는 가장 큰 이유 중 하나는 UI를 자동으로 업데이트해 준다는 점이다.
리액트는 가상 돔(Virtual Dom)
을 통해 UI를 빠르게 업데이트한다. 가상 돔은 이전 UI 상태를 메모리에 유지해서, 변경될 UI의 최소 집합을 계산하는 기술이다. 이 기술 덕분에 불필요한 UI 업데이트는 줄고, 성능은 좋아진다.
컴포넌트는 재활용이 가능한 UI의 구성 단위를 의미.
예를 들어 인스타그램 페이지를 Nav, Main, MainRight, Feeds, Article 과 같은 단위로 쪼개서 구성하면 관리가 수월하다.
특징으로는
컴포넌트를 구성하는 방법으로는 두 가지 방법이 있다.
함수형 컴포넌트 (Functional Component) vs Class형 컴포넌트 (Class Component)
자바스크립트 확장 문법. (JavaScript Syntax Extension)
JSX로 작성한 코드는 브라우저에서 동작하는 과정에서 바벨(Babel)
을 사용하여 일반 자바스크립트 형태의 코드로 변환된다.
HTML 태그를 그대로 사용하기 때문에 보기도 쉽고 익숙하며 자바스크립트도 JSX안에서 동작하게 할 수 있다.
특징
- 자바스크립트 표현하기 :
{...javascript...}
- class -> className
- Inline Styling:
<div style = {{color:'red}}> Hello React </div>
- Self Closing tag:
<div></div>
-><div />
- 모든 요소를 감싸는 최상위 요소 :
JSX의 큰 특징 중 하나는 내부 요소들을 감싸는 최상위 요소가 있어 하나의 컴포넌트 안에 여러 요소(자식)들을 감싸는 방법으로 간단히 그룹화 할 수 있다.