React는 Facebook에서 만든 것으로 사용자 인터페이스(UI)를 위한 JavaScript의 library이다.
리엑트를 선택한 가장 큰 이유 중 하나는, 생태계가 잘 구성되어 있다. 많은 사용자들 덕에 다양한 학습자료를 쉽게 찾아볼 수 있다. 또한 페이스북에서 개발한 만큼 지속적인 관리를 기대할 수 있을 것으로 보인다.
기본 프로그램
Node.js : javaScript가 브라우저 밖에서도 동작하게 하는 환경
프로젝트 개발 환경을 구축하는 주요 도구들이 Node.js 기반이다 (ex. CRA, Babel, Webpack)
npm (node package manager) : npm을 통해 다양한 패키지를 설치하고 버전을 관리할 수 있다.
CRA (Create-react-app) : 리액트 프로젝트를 시작하는데 필요한 개발 환경을 세팅해 주는 도구
구성내용
node_modules: CRA를 구성하고 있는 package 소스 코드의 모음이다. 무거운 폴더이기 때문에 나중에 프로젝트를 git으로 관리할 때는 gitignore로 github와 연동되지 않도록 한다.
package.json : dependencies > CRA 기본 패키지 외 추가로 설치된 라이브러리/패키지 정보 (종류/버전)가 기록되는 파일
javaScript의 확장된 문법으로 React에서 사용되는 문법이다. JSX는 Html과 비슷하게 생겼지만 웹브라우저는 읽을 수 없다. 웹브라우저가 JSX 코드를 읽기 위해서는 JSX compiler가 필요하다. (JSX compiler로 보통 babel을 사용한다)
. Element 를 변수로 저장할 수 있다. (JavaScript)
. attribute를 가질 수 있다. (Html)
. 중첩된 형태의 코드를 작성할 때는 ()로 Element 요소를 감싸줘야 한다.
const theExample = (
<a href="https://www.example.com">
<h1>
Click me!
</h1>
</a>
)
.component는 하나의 최상위 태그만을 갖는다.
만약 최상위의 태그가 의미를 갖지 않은 div 태그라면 react fragment(<>...</>)로 대체할 수 있다.
. self closing 태그를 갖는다.
reactDOM은 react library의 이름으로 이 library는 몇가지 중요한 method를 가지고 있다.
reactDOM.render() : JSX를 생성하는 가장 흔한 method로 JSX 표현식을 DOM tree에 생성할 때 사용한다.
.render(element, container[, callback])
render 안에 element는 JSX 표현식 또는 JSX의 표현식이 담긴 변수,
container는 element가 append될 위치를 의미한다.
reactDOM.render(<h1>render me!</h1>, document.getElementById('app'));
React는 요소들을 update할 때 virtual DOM을 전체적으로 update하고 이전의 DOM과 비교하여 바뀐 Element만 파악해서 정확하게 ReactDOM을 변경한다. 이 프로세스를 "diffing"이라고 한다.
[update과정]