페이지에 공통적으로 사용되는 (자주 중복되는) UI요소들은 컴포넌트 단위로 모듈화를 시킨다.
웹에서의 업데이트는 곧 상호작용(interaction)을 의미함
→ 사용자의 행동(버튼클릭, 메세지 입력 등)에 웹이 실시간으로 반응하는 것
한 페이지 내에서도 여러 정보를 얻을 수 있게 됨
(Critical Rendering Path)
Render Tree
Layout
Painting
JavaScript의 DOM 수정
업데이트 시 주의사항 : Reflow, Repaint 최소화 필수
나쁜코드
좋은코드
따라서 동시에 일어나는 업데이트를 최대한 모아서 시켜줘야하는데, 이것은 서비스 규모가 커질수록 점점 어려워진다. → 해결방안: Virtual DOM
npm init
npm install react
따라서 위의 복잡한 단계들을 한번에 처리해주는 도구 Vite를 사용한다.
vite: 세팅된 react앱을 자동으로 생성해준다.
npm create vite@latest
dependencies
: 패키지 안에 어떤 라이브러리들이 설치되어 있는가
※ npm install
로 라이브러리 설치
devDependencies
: dependencies
와 같이 어떤 라이브러리들이 필요한지 명시하지만, 실제로 프로젝트를 build해서 서버에 올릴 필요가 없는 않은 개발용 라이브러리
react앱을 만들기 위해 많은 라이브러리들이 필요함.
이미지, 폰트, 동영상 등 코드가 아닌 정적인 파일 보관
src
ㄴ assets
ㄴ react.svg
ㄴ App.css
ㄴ App.jsx
ㄴ index.css
ㄴ main.jsx
assets
폴더 : 소스코드에서 직접 접근해서 사용하는 이미지나 폰트를 보관하는 폴더.eslintrc.cjs
: eslint도구의 옵션 설정 (개발자들간의 코드스타일 통일).gitignore
: github에 올리지 않을 내용index.html
: react파일의 틀 역할 (여기에 직접 코드를 입력하지 않음, id="root"의 div아래 추가)vite.config.js
: vite도구의 옵션 설정npm run dev
리액트 앱 실행시 나오는 localhost 주소는 어떻게 생성된걸까?
https://localhost:5173
localhost
: 우리의 컴퓨터를 지칭하는 주소5173
: 포트번호※ 내 컴퓨터가 아닌 다른 컴퓨터에서는 접속하지 못함
<body>
태그 안에는 특별한 요소가 없음<body>
태그 안의<script>
태그가 실행한 자스 코드가 동적으로 생성한 요소들이다.