Web/React

[React] React 설정 및 유용한 기능

usingsystem 2025. 2. 18. 22:23
728x90

[Node.js]

Node.js는 브라우저 밖에서도 Javascript를 실행할 수 있게 해주는 런타임 환경이다.

크롬 v8 기반으로 동작하며 Single-Thread의 non-blocking I/O 이벤트 기반으로 동작한다.

아래 URL을 통해 Node.js를 설치할 수 있다.

https://nodejs.org/ko

 

Node.js — 어디서든 JavaScript를 실행하세요

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

[NPM ( Node Packege Manager )]

Javascript를 위한 패키지 관리자로 공개된 Javascript 라이브러리들을 쉽게 설치해 사용할 수 있다.


[React 파일 생성하기]

1. Create-react-app(CRA)를 사용하여 프로젝트 생성

vsCode 터미널에서 해당 명령어를 실행시켜 react project를 생성한다.

npx create-react-app 프로젝트명

2. 생성한 프로젝트 실행

기본 port는 3000번

npm run start

실행된 react

 

3. 실행 종료

Ctrl + c

생성된 프로젝트 파일 설명

  • node_modules/: npm install을 실행하면 생성되는 폴더로, 프로젝트에서 사용하는 외부 라이브러리들이 저장됩니다.
  • public/: 보통 정적 파일(이미지, HTML, CSS 등)이 위치하는 폴더입니다. React 같은 프레임워크에서는 index.html 파일이 이곳에 있을 수 있습니다.
  • src/: 프로젝트의 주요 소스 코드가 위치하는 폴더입니다. JavaScript, TypeScript, React, Express 등의 코드가 포함될 수 있습니다.

 

  • .gitignore: Git에서 추적하지 않을 파일 목록을 지정하는 파일입니다. 일반적으로 node_modules/나 환경 변수 파일(.env) 등이 포함됩니다.
  • package.json: 프로젝트의 기본 설정 파일입니다. 의존성 목록, 스크립트 명령어, 프로젝트 이름 및 버전 등의 정보가 포함됩니다.
  • package-lock.json: 프로젝트의 의존성 버전을 고정하는 파일입니다. npm install을 실행할 때 의존성이 정확히 동일한 버전으로 설치되도록 합니다.
  • README.md: 프로젝트의 설명 및 사용 방법이 적힌 문서입니다. 보통 GitHub에서 프로젝트를 설명하는 데 사용됩니다.


[eslint]

자바스크립트는 컴파일이 없기 때문에 직접 실행하지 않으면 오류를 찾기 어렵다. 이런 문제점을 보완 해주기 위해 나온 게 eslint 문법 및 코드 스타일을 검사해 주는 코드로 문법적인 오류를 사전에 발견할 수 있고 협업에서 통일된 코드 스타일을 유지할 수 있도록 도와준다. CRA에는 자체 내장되어 있다. ( package.json의 eslintConfig )


[prettier]

자동으로 코드를 정해진 규칙에 맞게 고쳐주는 툴

설치

상단에  File-> Preferences -> Settings 선택 다운받은 prettier 선택 -> Format On Save 선택

 

Format On Save는 소스코드에서 Ctrl + c로 저장을 하면 자동으로 불필요한 공백등을 제거해

 

prettier 설정

prettier의 규칙을 직접 설정할 수 있다.

.prettierrc.json 파일을 생성해준다.

아래와 같이 자신이 원하는 규칙을 직접 설정해서 사용 가능.

{
    "singleQuote" : true,
    "semi" : true,
    "tabWidth":2,
    "trailingComma": "all"
}

[eslint-plugin-simple-import-sort]

eslint-plugin-simple-import-sort는 ESLint 플러그인으로, JavaScript 및 TypeScript 코드에서 importexport 문을 자동으로 정렬하여 코드의 일관성과 가독성을 높여줍니다.

 

TERMINAL에 npm으로 설치 -> PACKAGE 파일에서 아래 소스 추가

  • 설치
npm install --save-dev eslint-plugin-simple-import-sort
  • package 추가
    "plugins": [
      "simple-import-sort"
    ],
    "rules": {
      "simple-import-sort/imports": "error",
      "simple-import-sort/exports": "error"
    }

  • Settings 설정

설정 -> code actions 검색 -> Editor: Code Actions On Save에 Edit in Settings.json 클릭 -> 

  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  }

전역 상태 관리

  • Recoil: React 전용 전역 상태 관리 라이브러리. 간단하고 직관적인 API로 상태를 atom 단위로 나눠 관리할 수 있음.
  • Redux: 예측 가능한 상태 관리를 위한 라이브러리. 복잡한 앱에서 중앙 집중식 상태 관리를 원할 때 사용. (Middleware, DevTools 등 강력한 생태계 제공)

API 연동

  • useSWR: React Hook 기반의 데이터 패칭 라이브러리. 자동 리페치, 캐싱, 로딩 상태 관리 등을 지원. Stale-While-Revalidate 전략 기반으로 최신 데이터 유지에 유리.

[React Router]

  • React Router: React 앱에서 URL 경로에 따라 컴포넌트를 렌더링해주는 라우팅 라이브러리. 동적 라우팅, 중첩 라우트 등 지원.

https://reactrouter.com/

npm install react-router-dom
  // routing  버전 v6 기준
  import { BrowserRouter } from "react-router-dom";
  import { Route, Routes } from "react-router-dom";

  <BrowserRouter>
   <Routes>
     <Route path="/" element={<PageA/>(컴포넌트)} />
     <Route path="/2" element={<PageB/>(컴포넌트)} />
   </Routes>
  </BrowserRouter>
import { Link } from "react-router-dom";
  <div>PageA</div>
  <div>
    <Link to="/2">move to PageB</Link>
  </div>

[styled-components]

CSS-in-JS 방식의 스타일링 도구. 컴포넌트 단위로 스타일을 관리하며, props를 이용한 동적 스타일링도 가능.

https://styled-components.com/

설치

npm install styled-components

예시

// Create a Title component that'll render an <h1> tag with some styles
const Title = styled.h1`
  font-size: 1.5em;
  text-align: center;
  color: #BF4F74;
`;

// Create a Wrapper component that'll render a <section> tag with some styles
const Wrapper = styled.section`
  padding: 4em;
  background: papayawhip;
`;

// Use Title and Wrapper like any other React component – except they're styled!
render(
  <Wrapper>
    <Title>
      Hello World!
    </Title>
  </Wrapper>
);

데이터 불변성 유지

  • Immer: 불변성을 손쉽게 유지할 수 있게 해주는 라이브러리. 기존 객체를 직접 수정하는 것처럼 코딩해도 내부적으로 불변 객체를 생성.

UI 라이브러리

  • Ant Design (antd): 기업용 UI 디자인 시스템 기반의 React UI 컴포넌트 라이브러리. 많은 기능을 갖춘 고급 UI 요소들을 빠르게 구현 가능.
728x90