반응 앱 만들기
: React는 Node.js 기반의 JavaScript 라이브러리로 Webpack, Babel 등 React를 다양한 방식으로 지원하기 위해서는 추가 라이브러리가 필요합니다.
*Webpack: 여러 JavaScript 파일을 모듈 번들 라이브러리로 하나의 파일로 결합한 패키지
*Babel: 자바스크립트 컴파일러, JSX와 같은 다양한 단순하고 기본적인 자바스크립트 코드 작성을 도와주는 패키지, 자바스크립트와 HTML을 혼합한 구문.
: 이러한 추가 패키지를 직접 설치하지 않더라도 반응 앱 빌드 명령으로 React 앱을 설정할 수 있습니다.
: 리액트 앱을 생성할 폴더를 열고 터미널에서 다음 명령어로 생성합니다.
npx create-react-app 앱이름
*npx: 한 번만 설치되지 않는 패키지를 사용하고자 할 때 사용하는 npm용 편의 도구
반응 앱 실행
: 프로젝트가 생성된 디렉토리에서 다음 명령어로 프로젝트를 시작합니다.
npm start
: “성공적으로 컴파일되었습니다!” 메시지와 함께 제공된 URL로 접속하면 프로젝트가 시작되는 것을 확인할 수 있습니다.
반응 중지
: ctrl+c > “Y”를 입력하여 종료합니다.
프로젝트 구성
|_ node_modules : node.js 패키지의 구성 요소 중 하나로 외부 모듈을 저장하는 폴더.
|_ public : 정적 파일이 있는 곳
|_ favicon.ico : 웹사이트 상단 탭의 아이콘 파일
|_robots.txt : 경로를 지정하여 웹 크롤러와 같은 로봇의 접근을 제어하는 규칙
|_ src: js 및 css 파일로 구성
|_ .gitignore : Git에 포함하고 싶지 않은 파일이나 폴더의 이름을 입력하기 위한 파일
|_ package.json : 기본 프로젝트 관련 내용(프로젝트명, 버전 등)을 기록하는 설정 파일
|_ README.md: 프로젝트 설명을 작성하는 곳
npm start로 실행되는 화면이 어떻게 구성되어 있는지 간단히 살펴보겠습니다.
위의 홈 화면은 App.js를 통해 구성됩니다.
아래의 코드 헤더 콘텐츠가 위의 스플래시 화면 콘텐츠와 일치하는지 확인할 수 있습니다.
//App.js
import logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;
그런데 사이트의 개발자 도구에서 실행 중인 프로젝트를 보면 root id로 div 아래에 App.js의 내용이 첨부되어 있는 것을 확인할 수 있습니다.
App.js에서는 JSX 문법의 HTML을 반환하면서 컴포넌트를 빌드하고, 내보내기 표준으로 내보낸 함수를 다른 파일에서 가져와서 사용할 수 있도록 합니다.
index.js에서 App.js를 가져오면 루트 ID가 있는 div 아래에 앱 함수가 반환한 값이 배치됩니다.
//index.js
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 />
</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();
이를 통해 구성 요소를 생성하고 삽입하여 React가 작동하는지 확인할 수 있습니다.
참조
(1) Infrastructure Bite React 강의: React 앱 구축
(2) 응답 폴더 구조: https://velog.io/@sisofiy626/React-%EB%A6%AC%EC%95%A1%ED%8A%B8%EC%9D%98-%ED%8F%B4%EB%8D%94 -%EA%B5%AC%EC%A1%B0