리액트는 Node.js 기반의 라이브러리다. 리액트는 세 가지 특징을 가진다.
원하는 경로에서 터미널을 열고, npx create-react-app 프로젝트명 을 입력하면 리액트를 사용하는데 필요한 라이브러리를 설치한다. 대표적 라이브러리로 Webpack, Babel 등이 있다.
JSX는 확장된 JS 문법이지만 브라우저가 처리하지 못한다. 때문에 컴파일러인 Babel이 사용자가 입력한 JSX를 JS 문법에 맞게 컴파일해준다. 아래 예시를 통해 JSX 문법을 살펴본다면
function App() {
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const user = {
firstName: 'Harper',
lastName: 'Perez'
};
const element = (
<h1>
Hello, {formatName(user)}!
</h1>
);
return element
}
분명 JS 같지 않다. 변수에 HTML 태그가 들어가있다. 리액트를 사용하기 전엔 HTML과 CSS, JS 세 가지 파일을 사용하여 관리해야 했지만 위 문법과 같이 작성하면 JS 문법과 HTML 문법을 동시에 활용하여 가독성을 높힌다. 위와 같은 하나의 코드셋을 컴포넌트라 한다. JSX 없이도 리액트를 사용할 수 있다. 리액트 공식문서에도 안내하듯 가능하다.
JSX 문법을 사용하면 반드시 지켜야 할 규칙들이 있다.
기존의 HTML, CSS, JS를 통한 개발에서 레이아웃 등의 수정이 있을 때, HTML을 수정하여 구조를 바꾸고, CSS를 수정하고 JS가 올바르게 DOM을 조작하도록 수정해야 했다. 그러나 컴포넌트를 사용하면 그저 컴포넌트의 위치만 바꿔주는 식으로 수정이 가능하다.