React는 Facebook에서 개발한 JavaScript 라이브러리로, 사용자 인터페이스(UI)를 구축하기 위한 도구이다.
간단히 말하자면 게임(자바스크립트)의 확장팩 같은 개념이다.
기본 게임 (바닐라 JavaScript)
- 기본적인 기능만 있음
- 처음부터 모든 것을 직접 만들어야 함
- 복잡한 기능 구현이 어려움
확장팩 (React)
- 추가 기능들이 미리 준비되어 있음
- 편리한 도구들이 많이 포함됨
- 복잡한 기능을 쉽게 구현 가능
- 커뮤니티에서 만든 추가 확장팩(라이브러리)도 많음
게임 비유로 React의 특징을 설명하면:
- 컴포넌트 = 게임의 아이템 조합 시스템
- Virtual DOM = 게임의 최적화 패치
- JSX = 더 쉬운 조작법
- npm = 게임 모드/아이템 상점
리액트의 목적은 기존 JavaScript의 문제점들을 개선하는 것이다.
기존 JavaScript의 문제점
- DOM 조작의 비효율성
- 변경될 때마다 전체 페이지 리렌더링
- 성능 저하 발생
- 복잡한 DOM 조작 코드
- 코드 재사용의 어려움
- 같은 코드 반복 작성
- 유지보수 어려움
- 일관성 유지 힘듦
- 상태 관리의 복잡성
- 데이터 변화 추적 어려움
- 복잡한 이벤트 핸들링
- 전역 변수 관리 문제
React의 해결책
- Virtual DOM
- 효율적인 렌더링
- 성능 최적화
- 컴포넌트 기반
- 코드 재사용성 증가
- 모듈화된 개발
- 단방향 데이터 흐름
- 예측 가능한 상태 관리
- 디버깅 용이
라이브러리?
라이브러리는 프로그래밍에서 자주 사용되는 기능들을 모아둔 코드의 집합입니다.
1. 기본 개념
- 미리 작성된 코드 모음
- 반복적으로 사용되는 기능들을 패키지화
- 개발자가 처음부터 코드를 작성할 필요 없음
2. 실생활 비유
- 도서관(Library)처럼 필요한 것을 골라서 사용
- 요리할 때 미리 만들어진 소스를 사용하는 것과 비슷
3. 장점
- 개발 시간 단축
- 코드 재사용성 증가
- 검증된 코드 사용으로 안정성 확보
- 유지보수 용이
4. 예시
- jQuery: JavaScript 작업을 쉽게 만드는 라이브러리
- React: UI 개발을 위한 라이브러리 - Lodash: 데이터 처리를 돕는 유틸리티 라이브러리
5. 프레임워크와의 차이
- 라이브러리: 필요한 부분만 선택적으로 사용 가능
- 프레임워크: 전체적인 구조를 제공하며 규칙을 따라야 함 라이브러리는 개발자의 작업을 효율적으로 만들어주는 도구라고 생각하면 됩니다.
주요 특징
1. Component 기반 구조: 재사용 가능한 UI 조각들을 독립적으로 만들어서 레고처럼 조립하는 방식
2. Virtual DOM 사용: 실제 DOM을 직접 수정하지 않고 가상의 DOM을 먼저 수정해서 성능을 최적화하는 방식
3. 단방향 데이터 흐름: 데이터가 부모에서 자식으로만 흐르도록 해서 예측 가능하고 디버깅하기 쉽게 만드는 방식
4. JSX 문법 지원: JavaScript 안에서 HTML같은 문법을 사용할 수 있게 해주는 특별한 문법
5. 선언적 프로그래밍 방식: "어떻게 할지"가 아닌 "무엇을 할지"만 정의하여 코드를 더 직관적으로 작성하는 방식
Components (컴포넌트)
- UI를 재사용 가능한 독립적인 조각으로 나눔
- 클래스형과 함수형 컴포넌트 존재
Props와 State
- Props: 부모 컴포넌트에서 자식 컴포넌트로 데이터 전달
- State: 컴포넌트 내부에서 관리되는 데이터
장점:
- 높은 재사용성
- 효율적인 렌더링
- 큰 개발자 커뮤니티
- 다양한 라이브러리 지원
- 쉬운 유지보수
활용:
- 웹 애플리케이션 개발
- 모바일 앱 개발 (React Native)
- 단일 페이지 애플리케이션(SPA) 구축
생태계:
- Redux (상태 관리)
- React Router (라우팅)
- Material-UI (UI 프레임워크)
- Next.js (SSR 프레임워크)
'리액트 > 기초' 카테고리의 다른 글
리액트 기초 01 - 핵심 요소 2 : 함수형 컴포넌트 (0) | 2025.04.06 |
---|---|
리액트 기초 01 - 핵심 요소 2 : 🧩 컴포넌트 (Component) 란? (0) | 2025.04.06 |
리액트 기초 01 - 핵심 요소 1 : JSX 요소 Fragment (0) | 2025.04.06 |
리액트 기초 01 - 핵심 요소 1 : JSX의 기본적 사용법 (0) | 2025.04.06 |
리액트 기초 01 - 핵심 요소 1 : JSX란? (0) | 2025.04.06 |