#1. React의 기본 구조

1. React의 디렉토리 구조

1) 전체 디렉토리 구조

  • node_modules : 리액트에서 사용할 수 있는 모듈들이 위치하는 폴더
  • public : static 자원 폴더, 정적 파일들을 위치하는 폴더
  • src : 실질적으로 화면에 보여질 내용들을 작업하는 폴더

 

2) public 폴더

  • public 폴더는 기본적으로 정적 파일을 담고있다.
  • 웹페이지에 보여지는 HTML이나 이미지 등을 위치시킨다.
  • manifest.json 은 앱 스토어 없이 기기의 홈화면에 설치할 수 있게 해주는 역할을 한다.
  • 웹페이지에 보여지는 HTML은 Virtual DOM을 위한 HTML 파일이다.
    • src폴더의 index.js 파일에서 렌더링 되는 내용이 <div id="root"></div> 에 들어온다.
<!-- === index.html === -->

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"/>
  
    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
  
    <title>React App</title>
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    
    <!-- index.js에서 렌더링 되는 내용이 아래 태그에 들어온다 -->
    <div id="root"></div>
    
  </body>
</html>

 

3) src 폴더

  • 실질적으로 화면에 보여지는 내용을 작업하는 폴더이다.
  • 작업한 자바스크립트 관련(Virtual DOM) 컴포넌트를 App.js 에 참조하고, index.js에 최종적으로 모든 파일들(js, css 등)을 한 곳에 참조한다. 

 

-1. index.js

  • index.js 파일은 src 폴더의 파일 중에서 진입파일 역할을 한다.
    • 모든 컴포넌트를 조합하여 렌더링하고 실제 표시한다.
// === index.js === //

// 리액트의 기본을 구성하는 패키지 참조
import React from 'react';

// 리액트가 DOM을 구성하는 패키지 참조
import ReactDOM from 'react-dom';

import './index.css';
import reportWebVitals from './reportWebVitals';

// 이 소스파일(index.js)과 동일한 위치(폴더)에 있는 App.js를 App 이라는 이름으로 참조한다
import App from './App';

// 컴포넌트 페이지에 렌더링한다
const root = ReactDOM.createRoot(document.getElementById('root'));
// .render -> 가져온 값에 대해 렌더링
root.render(

  // React.StrictMod -> 엄격모드 (쓰지 않는 변수가 있다면 경고 메세지를 콘솔창에 띄우는 역할)
  // 개발할 때만 사용하는 것이니 배포할 때는 제거하는게 좋다.
  <React.StrictMode>
    <App />  // 렌더링할 값
  </React.StrictMode>
);

reportWebVitals();

 

-2. App.js

  • 컴포넌트를 정의하는 작업 파일로, 실제로 화면에 표시되는 내용들을 여기에 모두 참조한다.
// (1) 리액트 패키지 참조 (모든 js 파일의 최상단에서 필수 명시)
import React from "react";

// (3-1) 직접 작성한 컴포넌트 참조
import MyComponent1 from "./MyComponent1";
import MyComponent2 from "./MyComponent2";

// === (2) App 이라는 이름의 함수형 컴포넌트(재사용 가능한 HTML 조각단위) 정의 === //
// 프로젝트에서 컴포넌트를 렌더링(화면에 출력)하면 함수에서 반환하고 있는 내용이 브라우저에 나타난다.
// 반환되는 HTML 코드는 JSX 문법을 사용한다.
function App() {
  return (
    <div>
      <h1>Example</h1>

      {/* (3-2) 컴포넌트 출력 */}
      <MyComponent1></MyComponent1>
      <MyComponent2></MyComponent2>

    </div>
  );
};

// App 함수 내보내기
export default App;

 

2. React 기본 활용

1) 함수형 컴포넌트 정의

  • 함수 이름은 혼선을 방지하기 위해 소스파일의 이름과 동일하게 구성하는것이 일반적이다.
    • 함수 이름의 첫 글자는 대문자로 써야한다. 그래서 소스파일 이름도 첫글자는 대문자로 한다.
  • 함수의 리턴으로 값을 받고, HTML 구조를 의미하는 JSX 문법으로 작성해야한다.
  • JSX 구조는 무조건 단 하나의 태그 요소만 반환해야한다.
  • 즉,  리턴하는 태그가 여러개일 경우 부모 태그 하나에 모두 포함시켜야한다. (보통 <div> 태그에 감싼다)
// react 기본 패키지 참조 (필수)
import React from 'react';

const Example = () => {
  return (
    <div>
      <h2>Example</h2>
      <p>React React React</p>
    </div>
  );
};

 

2) 내보내기

  • export를 사용해서 함수명을 내보낸다.
export default Example;

 

3) 참조하기

  • 상단에 import ~ from 으로 해당 파일을 참조한다.
import 참조명 from 파일주소

ex)
import Ex from "./Example";

 

  • 참조한 함수는 태그명을 통해 사용할 수 있다.
  • 다른 js 컴포넌트를 import(참조)하여 내가 리턴하는 JSX 코드 안에 재사용하여 DOM 구조를 구성해나간다.
import React from 'react';
import Ex from "./Example";

const App = () => {
  return (
    <div>
      <h1>참조한 컴포넌트 사용하기</h1>

      <Ex />
      <Ex />
      
    </div>
  );
};

export default App;

 

4) 실행하기

  • 명령프롬프트(윈도우)나 터미널(맥)에서 해당 프로젝트 주소로 이동한다.
  • 또는 vscode 안에서 터미널을 통해 한번에 이동할 수 있다.

vscode 안에서 터미널 활용

  • 해당 프로젝트 주소에 이동해서 yarn start 명령어를 수행한다.

위의 1~3번 까지 수행한 내용 표시

'국비수업 > React' 카테고리의 다른 글

[React] CSS 사용하기  (0) 2022.04.26
[React] Props (Properties)  (0) 2022.04.25
[React] JSX (JavaScript eXtension)  (0) 2022.04.23
[React] SPA (Single Page Application)  (0) 2022.04.22
[React] React의 개념 / 개발환경 구성하기  (0) 2022.04.21

+ Recent posts