// [설계] React Component (Functional)functionApp() {return <div>React Element</div>}// [인스턴스 생성] React Element (JSX)// 마치 HTML 문법인 것 처럼 보인다. var app = <App/>// ReactDOM (rendering)// ReaetDOM.render(가상DOM(React 요소), 실제 DOM 요소)// ReaetDOM.render()에 의해서 실제 돔 요소에 붙여지게 된다. ReactDOM.render(app,document.querySelector('#app'))
컴포넌트 시스템
App(), AppMain(), MenuList(), MenuListItem() 과 같은 컴포넌트를 만들어 사용한다. 마치 HTML <tag>처럼 보인다.
정적 리소스 디렉토리이며 비디오, 이미지, 정적 html 등이 있다. 비디오와 이미지 파일 등을 index.html에서 불러와서 사용한다.
public/ index.html
해당 파일은 React 앱이 구성되는 기본 템플릿 파일이다. 언어(lang)을 설정하거나 필요한 비디오, 이미지와 같은 정적 리소스를 추가할 수 있다.
%PUBLIC_URL%은 변수처럼 사용된다. public 디렉토리를 가리킨다고 보면 된다.
manifest.json 파일은 사용 되는 메타 데이터의 정보를 제공한다.
<!DOCTYPE html>
<!-- en 값을 ko-KR로 변경 -->
<html lang="ko-KR">
<head>
<meta charset="utf-8" />
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<!--
manifest.json은 웹 앱을 사용자의 모바일 장치 또는
데스크톱에 설치할 때 사용되는 메타 데이터를 제공한다.
참고: https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
위의 태그에서 %PUBLIC_URL%을 사용한다.
%PUBLIC_URL%은 빌드하는 동안`public` 폴더의 URL로 대체 된다.
public 폴더 안에 있는 파일들만 HTML에서 참조 할 수 있다.
"/favicon.ico"또는 "favicon.ico"과 달리, "%PUBLIC_URL%/favicon.ico"는
클라이언트 사이드 라우팅(CSR)과 non-root public URL에서 문제없이 작동한다.
`yarn build` 명령을 실행하면 non-root public URL에 대해 알 수 있다.
-->
<title>React 앱</title>
</head>
<body>
<noscript>이 앱을 실행하려면 JavaScript가 사용가능한 환경이어야 합니다.</noscript>
<div id="root"></div>
<!--
이 HTML 파일은 템플릿이다.
브라우저에서 직접 열면 빈 페이지가 나타난다.
이 파일에 웹 폰트, 메타 태그 또는 Google 애널리스틱(통계, 분석)을 추가 할 수 있다.
빌드 단계에서 번들 된 스크립트는 <body> 태그 내부에 삽입된다.
개발을 시작하려면`npm start` 또는 `yarn start`를 실행한다.
배포를 위한 번들 파일을 생성하려면 `npm run build` 또는 `yarn build`를 실행한다.
-->
</body>
</html>
src/ index.js
React 애플리케이션의 엔트리(Entry) 파일로 애플리케이션을 구성하는 설정이 포함된다.
React, ReactDOM을 불러오며 App.js 파일도 여기서 불온다. 그리고 지막으로 가상 돔요소를 실제 돔요소에 render()하는 작업을 이곳에서 한다