사용자 인터페이스(UI)를 만들기 위한 자바스크립트 라이브러리 이다.
규모가 커지고 복잡한 애플리케이션을 개발하며 생산성을 향상시키고 많은 양의 데이터 관리와 코드 유지 보수를 더욱 편리하게 하기 위해 다양한 프레임워크, 라이브러리가 등장하게 된다. 그 중에 리액트는 오로지 View만 담당한다.
리액트와 같은 프론트엔드 라이브러리 혹은 프레임워크를 사용하는 가장 큰 이유 중 하나는 UI를 자동으로 업데이트해 준다는 점이다. 리액트는 가상 돔(Virtual Dom) 을 통해 UI를 빠르게 업데이트한다. 가상 돔은 이전 UI 상태를 메모리에 유지해서, 변경될 UI의 최소 집합을 계산하는 기술이다. 이 기술 덕분에 불필요한 UI 업데이트는 줄고, 성능은 좋아진다.
참고 : https://www.youtube.com/watch?v=BYbgopx44vo
Create react app(툴체인) 도구들을 엮어서 모아둠리액트는 UI 기능만 제공하기 때문에 개발자가 직접 구축해야하는 것들이 많다.
때문에CRA는 웹 어플리케이션을 만들기 위한 환경을 제공한다.
SPA(Single Page Application)를 만들기 위해서 CRA를 가장 많이 사용한다.
CRA 사용하기 전에 작업 환경을 설정해야 한다.
Node, npmNode = 브라우저 밖에서도 자바스크립트를 실행할 수 있게 만들어주는 실행 환경.npmNode 기반의 패키지를 사용하려면 npm이라는 패키지 도구가 필요하다. npm을 통해 다양한 패키지를 설치하고 버전을 관리할 수 있다.재사용 가능한 UI 단위를 뜻한다.
블록들을 모아서 성을 쌓고, 부품들로 자동차를 만들고.. 독립적으로 사용할 수 있는 하나의 모듈을 말한다.
웹 개발하면서 유지보수에 이점을 가지고 있는 것이 바로 이 컴포넌트라고 할 수 있다.
컴포넌트 = 독립적으로 사용할 수 있는 하나의 모듈이다.
Javascript syntax extension => 자바스크립트 확장 문법
자바스크립트에서 만든게 아니라 리액트에서 만든 문법
JSX로 작성한 코드는 브라우저에서 동작하는 과정에서 바벨을 사용하여 일반 자바스크립트 형태의 코드로 변환한다.
자바스크립트계의 파파고 = 바벨. 즉, 바벨은 번역기 역할을 한다.