🐯
경민민 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
  • 정형화된 템플릿을 찾는 이미지1
  • Intro - CRA의 탄생배경
  • Webpack, Babel, EsLint를 모아서 CRA로 만드는 이미지2
  • CRA패키지의 기본구성
  • Webpack
  • 번들링 해주는 이미지3
  • Babel
  • ESLint
  • Vite
  • Esbuild
  • Rollup
  • 결론
  1. 프론트
  2. React
  3. 리액트 프로젝트 생성(18.3.1.ver)

CRA 와 Vite 비교

CRA와 VITE의 특징 및 차이점 비교

PreviousHTML + react 샘플Next리액트 개념들

Last updated 10 months ago

정형화된 템플릿을 찾는 이미지1

Intro - CRA의 탄생배경

리액트가 발표될 당시에는 리액트를 쉽게 시작할 수 있는 표준화된 템플릿이 존재하지 않았습니다.

리액트를 적용하기 위해서는 직접 npm install이나 CDN방식으로 HTML템플릿에 React 스크립트와 추가 패키지들을 직접 import해와서 작업을 해야 했습니다.

심지어 빠르게 변화하는 버전에 맞춰서 기존 코드들도 수정을 해줘야 했기에 리액트를 통한 유지보수는 더욱 어려웠죠.

이를 해결하기 위해 Create React App이 출시 되었습니다.

CRA는 리액트 프로젝트를 쉽게 시작할 수 있는 기본 템플릿을 제공합니다. CRA에는 리액트를 구동하기 위한 기본 설정, 로깅위한 도구 , 배포를 위한 설정 및 도구들을 하나의 패키지로 압축하여 제공합니다. CRA의 등장으로 개발자는 한줄의 간단한 명령어로 손쉽게 React 프로젝트를 시작할수 있게 되었고 , 이로인해 많은 개발자들이 리액트를 사용하게 되었습니다.

Webpack, Babel, EsLint를 모아서 CRA로 만드는 이미지2

CRA패키지의 기본구성

CRA로 리액트 프로젝트를 구성한다면 리액트 앱개발에 필요한 다양한 라이브러리가 기본구성으로 추가되어 있습니다. 대표적으로 Webpack과 Babel, ESLint등이 있습니다. 이 대표적인 구성 모듈들이 어떤 기능을 수행하는지 알아보도록 하겠습니다.

Webpack

번들링 해주는 이미지3

웹팩은 여러 자바스크립트 파일을 하나로 합쳐주는 역할을 하는 도구입니다. 리액트로 앱개발을 하다보면 상당히 많은 js파일을 사용합니다. Webpack은 이러한 js파일(모듈)들을 하나 혹은 설정에 따라 여러개의 묶음(bundle)으로 만들어 줍니다. 자바스크립트 번들러 라고도 불립니다.

자세한 기능은 Vite와 비교하면서 설명하도록 하겠습니다.

Babel

바벨은 TypeScript에서도 사용되었던 트랜스파일러입니다. 컴파일러라고 생각해도 좋겠죠. 바벨은 JSX문법이 적용된 JS파일을 브라우저환경에서 작동하는 JS파일로 변환해주는 역할을 합니다.

ESLint

문법상의 오류나 에러가 발생할수 있는 코드, 사용하지 않는 변수 등 코드의 품질을 올려주기 위한 로깅 기능을 제공하는 모듈입니다. 팀프로젝트에서 문법작성 룰을 추가해서 일관된 코딩스타일을 강제로 적용시킬수 있습니다.

그 외에도 개발에 도움이 되는 다양한 도구들을 하나의 패키지로 압축해서 제공하는게 CRA입니다.

Vite

Vite는 CRA이후에 나온 프론트앤드 개발환경 설정 도구입니다. Vite는 React프로젝트 뿐 아니라 vue, angular등 다양한 프론트엔드 프로젝트의 템플릿을 생성하는데 사용합니다. Vite는 프랑스어로 "빠르다"라는 뜻 입니다.

의미 그대로 많은 부분에서 CRA방식의 프로젝트 보다 빠르게 동작하는데요, CRA와 비교하여 어떤 구성모듈의 차이로 빠른지에 대해 알아보도록 하겠습니다.

Esbuild

Vite는 네이티브 escript언어로 작성된 ESbuild를 통해 웹서버를 구축합니다.

Rollup

CRA의 Webpack과 같은 js bundler입니다.


결론

CRA와 Vite의 차이점에 알아보았습니다. CRA방식은 Vite방식에 비해 프로젝트 빌드도 느리고, 번들러의 압축용량도 크고, 서버 시작시간도 느리는 등 단점이 명확합니다.

따라서 프로덕션레벨의 애플리케이션을 만들어야 한다면 Vite방식이 좋습니다.

하지만 리액트를 공부하기 위해서는 CRA만한 패키지가 없습니다. 리액트앱을 구동하기 위한 모든 구성 모듈이 하나의 패키지에 모두 설치되어 있기 때문이죠.

따라서 리액트에 대해선 완벽히 알고 있다면 Vite방식으로 프로젝트를 생성하면 되겠고 공부를 위해서는 다양한 샘플과 튜토리얼이 존재하는 CRA방식으로 작업하는게 좋은 선택이라고 할 수 있습니다.

CRA와 Vite방식은 프로젝트 설정이나 import구문이 다르기 때문에 리액트 외적인 요소로 리액트를 학습하는데 방해가 될 수 있기 때문입니다. 여러분들은 리액트 공부는 CRA프로젝트로 진행하시고 문법에 대해 익숙해지시면 Vite방식으로 프로젝트를 진행하시면 되겠습니다.

Create React App
CRA 공식 메뉴얼
Logo