🐯
경민민 IT 핸드북
  • Orientation
    • 전달사항
    • 복습방법
    • 수료한 선배의 한마디
    • 간단 자기소개
    • 스터디
  • 백엔드
    • Java
      • 1장 프로그래밍 기초
      • 2장 자바 메모리구조
        • 1. Stack
        • 2. Heap
      • 6장 객체
      • 8장 상속
      • 9장 다형성
      • 10장 추상클래스와 인터페이스
      • 13장 Generic
      • 14장 Thread
      • 15장 Network
      • 16장 Lamda
        • 1. 내부 클래스 (Inner Class)
          • DTO , VO, Builder Pattern
        • 2. 람다 표현식 (Lambda Expression)
        • 3. 스트림 API (Stream API)
          • Optional
      • 17장 Enum
  • 프론트
    • Node.js
    • Java Script
      • ES6+
        • Node.js로 자바스크립트 실행
        • let , const , var
        • Destructuring문법
          • Rest(...) 문법
        • Arrow Function
        • 모듈
        • ETC
    • Type Script
      • 개요
      • TS설치 및 환경설정
      • 타입스크립트 기본
        • 기본 자료형들과 타입추론
        • Object, Array , Tuple
        • Any, Unknown, Union Type
        • Function Type
          • Type Assertion && Narrowing
          • Never type
        • Type Aliases와 Interface
        • 리터럴 타입
        • 함수 추가 문법
        • Class문법
        • 객체 타입 추가 문법
        • 실습문제 1차
        • 실습문제 2차
        • 실습문제 3차
    • React
      • 개요
      • SPA 와 MPA
        • SEO(작성예정)
      • 리액트 프로젝트 생성(18.3.1.ver)
        • HTML + react 샘플
        • CRA 와 Vite 비교
      • 리액트 개념들
        • Component
          • 클래스 컴포넌트(작성예정)
          • 함수형 컴포넌트(작성예정)
        • JSX
        • React Virtual Dom
          • Reconciliation
        • hook
          • useState
        • 리액트 데이터 전달
          • FLUX
      • 백엔드 서버 연동
        • 비동기요청
        • 웹소켓
        • Promise(작성예정)
      • 실습문제 1
      • 실습문제 2
      • 실습문제3
      • 실습문제4
  • 프레임워크
    • Spring
      • Spring 개발환경 구축
        • 프로젝트 환경설정
        • 프로젝트 생성
          • MVC Project 생성이슈
        • Maven 설정
        • web.xml 설정
        • Spring Bean Configuration.xml 설정
      • Spring Legacy Project
        • Spring 요청 및 응답 흐름
        • Spring 주요 Annotation
          • 의존성 주입방식의 차이점
          • @ModelAttribute와 유효성검사
          • 비동기처리
          • 스프링 예외처리
        • Logging
        • Pagination
        • Spring File 업로드 및 다운로드
        • Spring WebSocket
        • Spring AOP
      • Spring 라이브러리들(작성예정)
        • Lombok
        • Maven
        • MyBatis
      • Spring 구성 모듈(작성예정)
      • 스프링 과제
    • Spring Boot
      • Spring Boot 개발환경 구축
      • 스프링 부트 프로젝트 생성방법들
        • 프로젝트에서 사용하는 의존성들
      • 스프링 프로젝트 구조
        • SpringBootApplication
      • application.properties
      • Cross Origin
        • CORS
      • WebSocket
        • Stomp(작성중)
      • 로그인(작성중)
      • Spring Security(작성중)
      • 실습문제 Select
      • 실습문제 Update
      • 실습문제 Delete
  • 형상관리(Git)
    • GitHub설정
    • SourceTree를 활용한 깃허브 연동
      • 소스트리 설치
      • Clone
      • Branch
        • Branch Protection rules
          • Branch Protection Rules 상세규칙
        • Rebase 와 Squash (작성예정)
      • Team Project 설정
        • 팀장 프로젝트 셋팅
          • Collaborator
          • .gitignore 설정
        • 팀원 프로젝트 셋팅
        • 공통 프로젝트 진행
  • 프로젝트
    • 진행순서
      • 요구사항 분석 단계
        • 유용한 사이트
      • 프로그램 설계 단계
        • 유용한 사이트
      • 프로그램 구현단계
        • SourceTree를 활용한 Team Project설정
      • 테스트 단계
  • 배포
    • AWS-EC2 배포 연습
    • DevOps
      • IT시스템의 변화와 DevOps
      • DevOps 라이프사이클
    • 젠킨스
      • 도커
        • 도커 설치 방법
        • 도커 기본 명령어들
      • 젠킨스 설치
      • 젠킨스 프로젝트 생성
      • 젠킨스 소스코드 통합 - Github
      • 젠킨스 빌드 설정 - Maven
      • 배포 서버 구축하기
      • 파이프라인 구축
      • AWS 서버 생성
        • AWS 인스턴스 생성
        • AWS - Zenkins 연동
        • AWS - 배포서버 연동
        • AWS - Jenkins CI/CD파이프라인 구축
  • 유용한 사이트 모음
  • SQL
    • SQLD
      • 데이터 모델링의 이해 - 스키마
      • 데이터 모델링의 이해 - ERD
      • 데이터 모델링의 이해 - 정규화
      • 데이터 모델링의 이해 - NULL
      • SQL 기본 및 활용 - WINDOW FUNCTION
    • Oracle
      • 1장 개요
      • 2장 SQL
  • LLM 서비스
    • 1장 LLM에 대한 이해
    • 2장 프롬프트 엔지니어링
      • 프롬프트와 프롬프트 엔지니어링
      • GPT PlayGround
      • 프롬프트 작문 유형
      • 기본 프롬프트 엔지니어링 태크닉
      • 고급 프롬프트 엔지니어링 태크닉
        • ReAct Prompting
        • Active-Prompt
        • Reflexion
        • Graph Prompt
      • OpenAI API설정
      • OpenAI를 활용한 프롬프트 엔지니어링 실습
        • 실습 프롬프트
    • 3장 Lang Chain 프레임워크
      • LangSmith 프레임워크
        • LangSmith를 활용한 LangChain 모니터링 설정
      • LangChain 실습 1 - Prompt
        • 실습 코드
      • LangChain 실습 2 - LLM 캐시와 메모리
    • 4장 RAG
      • Document Loader - 문서 로더
      • Text Splitter - 텍스트 분할
      • Embedding - 임베딩
      • Vector Store - 벡터 저장소
      • Retriever - 검색기
      • ReRanker - 재평가자
      • RAG
Powered by GitBook
On this page
  • Intro - 생성방법
  • 설치 준비물
  • 프로젝트 생성
  • 프로젝트 분석
  • 프로젝트 구조
  • 1) myapp아래 파일들
  • 과제) package.json, package-lock.json, tsconfig.json의 각 속성들이 어떤역할을 하는지 직접 검색해서 알아오기(gpt복붙금지)
  • 2) node_modules
  • 3) public
  • 4) src
  1. 프론트
  2. React

리액트 프로젝트 생성(18.3.1.ver)

리액트 프로젝트를 생성하는 방법에 대해 기술할 페이지. 버전별 차이가 존재할수 있음

PreviousSEO(작성예정)NextHTML + react 샘플

Last updated 4 months ago

Intro - 생성방법

리액트를 활용하여 프로그래밍을 하려고 할때 선택지는 크게 2가지 있습니다.

  1. HTML에 CDN방식으로 react.js와 react를 사용하는데 필요한 js를 직접 추가하는 방법.

  2. node.js 명령어를 통해 리액트 프로젝트를 구성하는 방법.

1번 같은 경우 이미 개발중인 어플리케이션에 점진적으로 react를 적용시키고자 할때 사용하는 방법이고

2번과 같은 케이스는 리액트 기반앱을 만들거나 리액트를 공부할 때 자주 사용합니다.


2번 방식으로 작업한다고 했을 때 크게 2가지 방법으로 프로젝트를 구성할 수 있는데

  1. (CRA)create-react-app을 통한 프로젝트생성

  2. Vite를 통한 프로젝트 생성

1번 같은 경우 react프로젝트를 구성하는데 필요한 모든 설정(로깅, jsx문법지원, 컴파일러 등)을 한번에 다운로드해주기 때문에 굉장히 편리하면서 react 공식 튜토리얼에 등장하는 프로젝트 생성방법이므로 리액트공부를 할때 자주 사용하는 방법입니다.

2번 같은 경우 Vite라는 웹프로젝트 생성도구를 다운로드 받아 리액트 템플릿을 다운로드 하는 것 입니다. CRA에 비해 기본 설정이 적기 때문에 개발자가 직접 설정정보를 추가해야 합니다.


그래서 뭐 써야함? 차이점이 뭐임?

저희는 리액트를 공부하는 단계이므로 CRA(create-react-app)을 사용하여 프로젝트를 생성할 것입니다.


설치 준비물

  • Node.js(LTS)

  • VSCode

    • 리액트 문법에 익숙해지면 플러그인으로 리액트 스닙펫추가하면 좋음.

  • Node.js만 안정화버전이 맞는지 체크하고 들어가자.

    • 버전확인 명령어

    • node -v

    • npm -v

프로젝트 생성

Vite로 react 프로젝트 생성

  1. react 폴더에서 npm create vite@latest react-practice-ts -- --template react-ts

  2. react , typescript선택

  3. react-practice-ts 폴더로 이동

  4. npm i -> npm run dev

  1. VSCode 열기 - File - Folder Open - reactWorkspace폴더 생성 - reactWorkspace폴더 선택

  2. Terminal - new Terminal(ctrl+shift+`)

  3. 터미널에 다음과 같은 명령어 입력. npx create-react-app myapp --template typescript myapp이라는 리액트 프로젝트를 생성해주면서 typescript를 사용할 수 있는 탬플릿을 자동생성.

타입스크립트와 react 버전 호환성 문제 발생시

  1. react uninstall후 안정화 버전의 react로 재설치

  2. 호환되는 버전의 typescript 설치

  3. 다운로드중 오류가 발생한 모듈들 재설치

  1. 프로젝트 생성 후 *cd myapp*으로 myapp 폴더 내부로 이동.

  2. npm start로 리액트 프로젝트 실행

  3. 이후 프로젝트 새롭게 열때는 반드시 프로젝트 폴더 내부로 이동하여 터미널을 연 후 npm start시켜주기

프로젝트 분석

프로젝트 구조

1) myapp아래 파일들

1. package.json

  • node.js로 프로젝트를 관리할때 사용하는파일.

  • CRA로 프로젝트생성시 npm에 의해 자동으로 생성되며 프로젝트의 버전이나 의존성 목록 등을 관리합니다.(Maven의 pom.xml처럼 의존성목록들과 프로젝트를 관리)

  • npm i --save 패키지명 으로 특정 의존성패키지를 다운로드받으면 package.json에 자동으로 기록된다.

  • 패키지가 존재하는 위치에서 npm으로 구동 가능한 스크립트(명령어)도 정의되어 있다.

    • npm start는 package.json의 scripts에 정의된 명령어. 사용하기 위해서는 package.json이 존재하는 위치까지 이동.

  • 추가적인 옵션과 사용방법이 궁금하다면 아래 공식문서 참조

2. package-lock.json

  • package.json에 기록된 의존성 목록과 버전정보를 정확히 기록해두는 파일.

  • package.json에는 최상위 의존성만 기록되지만, package-lock.json에는 최상위 의존성을 사용하기 위해 필요한 하위 의존성 정보까지 함께 기록해 둔다.

  • 프로젝트의 모든 의존성에 대한 상세 버전정보를 확인하고 수정할 수 있다

  • 추가적인 옵션과 사용방법이 궁금하다면 아래 공식문서 참조

3. tsconfig.json

  • 타입스크립트와 관련된 설정정보를 저장해두는 파일

  • 내부 속성들이 궁금하다면 아래 메뉴얼을 참고하도록 하자.

과제) package.json, package-lock.json, tsconfig.json의 각 속성들이 어떤역할을 하는지 직접 검색해서 알아오기(gpt복붙금지)

2) node_modules

  • package-lock.json안에 기록된 모든 의존성들이 다운로드 된 폴더

  • npm i 를 통해 위 의존성들을 다시 다운로드 받을 수 있다.

  • 용량이 크기때문에 git-hub에 올라가지 않도록 .gitignore에 /node_modules가 등록되어 있다.

3) public

  • 리액트앱의 정적자원(img,html)들을 보관하는 폴더

  • index.html이 화면상에 출력되는 메인페이지이다.

4) src

프로젝트의 소스파일들을 작성하는 폴더이다. 기본생성된 파일들의 역할은 다음과 같다.

  • App.css - App.tsx의 css파일

  • App.tsx - App이라는 이름의 Component. tsx파일은 jsx문법과 ts문법이 결합된 js파일

  • App.test.tsx - App을 테스트하는 파일

  • index.css - index. tsx의 css파일

  • index.tsx - npm start시 가장 먼저 가정 먼저 실행되는 파일. (entry point).

    • public/index.html파일과 함께 필수 요소

  • react-app-env.d.ts - 리액트 앱에 필요한 환경변수를 저장하는 파일

  • reportWebVitals.ts - 구글과 연동하여 내앱의 성능을 측정할 때 사용하는 파일

  • setupTest.ts - 테스트를 위한 설정파일

차이점에 대해서는 내용이 길어지므로 문서에서 확인해 보도록 하겠습니다.

CRA와 Vite비교
난 둘다~
package-lock.json | npm Docs
package-lock.json
TSConfig Reference - Docs on every TSConfig optiontypescriptlang
tsconfig 문서
Logo
package.json | npm Docs
npm package.json
Logo
Create React App
CRA 메뉴얼
Logo
Logo