일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 주니어개발자
- 대학생
- 프로그래밍
- 제주베이스코딩100제
- 코린이
- 프론트엔드
- 자바스크립트
- 웹퍼블리셔
- 자바스크립트 기초
- javascript
- 포토샵
- 웹개발
- 자바스크립트 기초활용
- 개발
- 자바스크립트 실습
- 취준생
- 퍼블리셔
- 웹퍼블리셔기술면접
- 퍼블리싱
- 자바스크립트 활용
- 프로그래밍기초
- 프로그래밍 기초
- 자바스크립트기초
- 생활코딩
- frontend
- js
- 코딩공부
- 코딩
- 웹퍼블리싱
- 프론트엔드기술면접
- Today
- Total
차곡차곡
리액트 기초 및 환경 구축 과 디렉토리 구조 본문
REACT
사용자 인터페이스를 만들기 위한 JavaScript 라이브러리
사용자 정의 태그를 만드는 기술이다.
React 환경 구축
새 폴더 생성 → visual Studio로 생성한 폴더 열기 → NodeJs.org(node.js 공홈에서 설치 )
→ Vs code 터미널 에서 npx create-react-app . 입력 ( 현재 폴더에 리액트 설치하는 명령어 ) → 설치 완료가 되면 react app 이 브라우저를 통해 자동 실행됨
React 디렉토리 구조
- create-react-app 을 통해 리액트 설치시 어떤 디렉토리 구조를 가지는가?
<react 파일 구조 >
my-app/
├── node_modules/
├── public/
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
├── src/
│ ├── App.css
│ ├── App.js
│ ├── App.test.js
│ ├── index.css
│ ├── index.js
│ ├── logo.svg
│ ├── reportWebVitals.js
│ └── setupTests.js
├── .gitignore
├── package-lock.json
├── package.json
└── README.md
주요 디렉토리 및 파일 설명
- node_modules/: 프로젝트 의존성이 설치되는 폴더 ,**npm install**을 통해 설치된 모든 패키지와 라이브러리가 이곳에 위치.
- public/: 정적 파일(HTML, 이미지, 기타 공개적으로 접근 가능한 리소스)을 담는 폴더, **index.html**은 애플리케이션의 HTML 템플릿 파일입니다.
- favicon.ico: 웹 페이지의 탭 아이콘입니다.
- index.html: 메인 HTML 파일로, 리액트 앱이 마운트되는 곳입니다.
- manifest.json: 웹 애플리케이션의 메타 데이터를 정의하는 파일로, 웹 앱을 PWA(Progressive Web App)로 만드는 데 사용됩니다.
- robots.txt: 웹 크롤러에게 사이트를 어떻게 크롤링하고 인덱싱해야 하는지 알려주는 파일입니다.
- src/: 애플리케이션의 소스 코드를 포함하는 폴더입니다. 여기에는 자바스크립트, CSS, 테스트 파일 등이 포함됩니다.
- App.js: 애플리케이션의 루트 컴포넌트입니다.
- index.js: 애플리케이션의 진입점입니다. 여기서 **ReactDOM.render**를 사용하여 앱을 DOM에 렌더링합니다.
- .gitignore: Git 버전 관리 시 무시할 파일 목록을 지정합니다.
- package-lock.json: 프로젝트의 의존성 트리에 대한 정확한 정보를 담고 있어, 다른 환경에서도 동일한 의존성을 설치할 수 있게 해줍니다.
- package.json: 프로젝트의 메타데이터와 의존성 목록을 담고 있는 파일입니다. 또한 스크립트와 프로젝트 설정도 포함됩니다.
- README.md: 프로젝트에 대한 설명, 설정 방법, 사용 방법 등을 담은 마크다운 파일입니다.
- ui 구현은 어떻게 이루어질까?
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
{/* <App /> ui 전체 */}
<App />
</React.StrictMode>
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
1. 모듈 임포트
- `import React from 'react';`: React 라이브러리를 임포트합니다. JSX를 사용하기 위해 필요합니다.
- `import ReactDOM from 'react-dom/client';`: React 18 이상 버전에서는 `react-dom/client` 모듈을 사용하여 DOM에 접근하고 조작합니다. 이를 통해 React 컴포넌트를 웹 페이지에 렌더링합니다.
- `import './index.css';`: 애플리케이션의 전역 스타일을 적용하기 위해 CSS 파일을 임포트합니다.
- `import App from './App';`: App 컴포넌트(애플리케이션의 루트 컴포넌트)를 임포트합니다.
- `import reportWebVitals from './reportWebVitals';`: 애플리케이션의 성능 측정을 위한 함수를 임포트합니다.
2. 루트 DOM 노드 선택
- `const root = ReactDOM.createRoot(document.getElementById('root'));`: 웹 페이지의 HTML 내에 `<div id="root"></div>`로 지정된 DOM 요소를 선택하고, 이를 리액트의 루트 컨테이너로 생성합니다.
3. React 컴포넌트 렌더링
- `root.render()`: 선택한 루트 DOM 노드에 React 컴포넌트를 렌더링하는 메소드입니다. 여기서는 `App` 컴포넌트를 렌더링합니다.
- `<React.StrictMode>`: 개발 모드에서 React 애플리케이션의 잠재적 문제를 검출하기 위해 사용됩니다. 부작용, 레거시 API 사용, 불필요한 리렌더 등을 경고합니다.
- `<App />`: 애플리케이션의 메인 컴포넌트입니다. 이 컴포넌트는 애플리케이션의 UI를 정의하고, 다른 자식 컴포넌트들을 포함할 수 있습니다.
4. 성능 측정
- `reportWebVitals()`: 애플리케이션의 성능을 측정하고, 이를 콘솔에 로그하거나 분석 엔드포인트로 보낼 수 있습니다. 이 코드는 성능 모니터링을 위한 선택적 기능이며, 주석 처리되어 기본적으로는 활성화되지 않습니다.
리액트 UI 구현 과정 요약
1. 필요한 모듈과 스타일을 임포트합니다.
2. 웹 페이지 내의 특정 DOM 요소(`id="root"`)를 리액트의 루트 컨테이너로 선택합니다.
3. `App` 컴포넌트를 포함한 리액트 애플리케이션을 루트 컨테이너에 렌더링합니다. 이 과정에서 `App` 컴포넌트와 그 자식 컴포넌트들로 구성된 UI가 웹 페이지에 나타납니다.
4. 개발자는 선택적으로 애플리케이션의 성능을 측정하고 모니터링할 수 있습니다.
'개발 > 리액트' 카테고리의 다른 글
리액트 생성 기능 구현 (0) | 2024.03.13 |
---|---|
리액트 state (0) | 2024.03.13 |
React Event (0) | 2024.03.13 |
React 컴포넌트 속성 props (0) | 2024.03.13 |
리액트 배포 과정 (0) | 2024.03.13 |