2025-2 KERT 웹 스터디
- 총 소요 시간: 1시간 30분
- 이론:실습 비중: 4:6 (이론 36분, 실습 54분)
- 대상: 웹 프론트엔드 개발 입문자
- 목표: 실무에서 바로 사용 가능한 JS/TS + React 핵심 개념 습득
- ✅ Session 1: JavaScript & TypeScript (4개 학습 자료 + 4개 실습)
- ✅ Session 2: React (4개 학습 자료 + 6개 실습 + 완전한 Todo 앱)
- 변수 선언 (const, let, var, 호이스팅)
- 데이터 타입 (원시 타입 vs 참조 타입)
- 연산자 (산술, 비교, 논리, 삼항)
- 템플릿 리터럴
- Truthy/Falsy와 단축 평가
- Optional Chaining (?.), Nullish Coalescing (??)
- 객체 단축 표기법
- 구조 분해 할당 (Destructuring)
- Spread/Rest 연산자
- 제어문 (if-else, switch, for, while)
- 함수 선언 방식 (함수 선언식, 표현식, 화살표 함수)
- 일반 함수 vs 화살표 함수 (this 바인딩)
- 기본 매개변수, 나머지 매개변수
- 배열 메서드 (forEach, map, filter, reduce, find, some, every)
- 메서드 체이닝 (실전 패턴)
- 배열 정렬 (sort)
- 실전 데이터 처리 예제
- 동기 vs 비동기
- 콜백 함수와 콜백 지옥
- Promise (then-catch, 체이닝, 정적 메서드)
- async/await (가장 중요!)
- Fetch API (GET, POST, PUT, PATCH, DELETE)
- JSON 다루기 (stringify, parse)
- 실전 CRUD 구현
- 에러 처리, 재시도 로직, 타임아웃
- 기본 타입 (원시 타입, 배열, 튜플, 객체)
- Interface (핵심!)
- Type Alias (Interface vs Type)
- Union과 Intersection 타입
- Literal 타입
- 함수 타입
- Generic (재사용 가능한 타입)
- Type Guard
- React와 TypeScript
- Utility Types (Partial, Pick, Omit, Record, Readonly)
-
- 객체 생성, 구조 분해 할당
- 템플릿 리터럴, 삼항 연산자
- Optional chaining, Spread 연산자
- 배열 평균 계산
-
- 화살표 함수 작성
- map, filter, reduce, some, every
- 메서드 체이닝 (평균 가격, 카테고리별 개수)
- 배열 정렬, 그룹화
-
- Promise (then-catch)
- async/await
- Fetch API (GET, POST, DELETE)
- 병렬 요청 (Promise.all)
- CRUD 구현
- 타임아웃, 재시도 로직
-
- Interface 정의 (Product, User, Author, Post)
- Generic 함수
- API 응답 타입 (ApiResponse)
- Type Guard
- Utility Types
- Mapped Types
- React 소개 및 개발 환경 설정 (Vite)
- 컴포넌트와 JSX
- Props를 통한 데이터 전달
- children Props
- 컴포넌트 분리와 재사용
- 조건부 렌더링 (삼항 연산자, &&)
- 리스트 렌더링 (map, key)
- 이벤트 처리
- State 개념
- useState Hook (가장 중요!)
- State 업데이트 패턴
- 입력 폼과 State
- 배열 State 조작 (추가, 삭제, 수정)
- 객체 State 조작
- useEffect Hook (Side Effects)
- localStorage와 State 동기화
- State 끌어올리기 (Lifting State Up)
- 실전 쇼핑 카트 예제
- React에서의 API 호출
- fetch API 사용하기
- 로딩/에러/데이터 상태 관리 (핵심 패턴!)
- POST, PUT/PATCH, DELETE 요청
- axios 라이브러리
- 커스텀 Hook (useFetch, useAsync)
- 실전 검색, 페이지네이션
- 에러 처리 Best Practices
- 완전한 Todo 앱 구현 가이드
- 컴포넌트 설계
- TypeScript 타입 정의
- LocalStorage 연동
- 완전한 CSS 스타일링
- 추가 기능 구현 방법
- 성능 최적화 (useMemo, useCallback)
📁 todo-app/ - 완성된 Todo 앱 코드
- ✅ Todo 추가/완료/삭제
- ✅ 필터링 (전체/완료/미완료)
- ✅ LocalStorage 자동 저장
- ✅ TypeScript 완벽 적용
- ✅ 반응형 디자인
📁 exercises/ - 사용 가이드
-
ProfileCard.tsx - 사용자 프로필 카드
- Props 사용
- 선택적 Props
- 조건부 렌더링
-
ProductList.tsx - 상품 목록
- 배열 렌더링
- 리스트와 key
- 카테고리별 배지
-
CounterWithHistory.tsx - 히스토리 카운터
- useState
- 배열 State 조작
- 이벤트 핸들링
-
TodoListWithFilter.tsx - 필터링 Todo 목록
- 여러 State 관리
- 배열 CRUD
- 필터링 로직
-
UserList.tsx - 사용자 목록
- fetch API
- useEffect
- 로딩/에러/데이터 상태
-
PostManager.tsx - 게시글 관리
- CRUD 구현
- POST, DELETE 요청
- 폼 처리
web-study/
├── README.md # 📘 이 파일
├── CLAUDE.md # Claude Code 작업 가이드
├── references/ # 참고 자료
│ └── 프론트엔드_2차시_JS.pdf
│
├── session1-js-ts/ # 📚 JavaScript & TypeScript
│ ├── 01-variables-and-types.md
│ ├── 02-functions-and-arrays.md
│ ├── 03-async-programming.md
│ ├── 04-typescript-basics.md
│ └── exercises/ # 실습 문제
│ ├── 01-variables-practice.js
│ ├── 02-functions-practice.js
│ ├── 03-async-practice.js
│ └── 04-typescript-practice.ts
│
└── session2-react/ # ⚛️ React
├── 01-react-fundamentals.md
├── 02-hooks-and-state.md
├── 03-api-integration.md
├── 04-todo-app-tutorial.md
├── exercises/ # 실습 문제
│ ├── README.md # 실습 가이드
│ ├── 01-react-basics-practice/
│ │ ├── ProfileCard.tsx
│ │ ├── ProfileCard.css
│ │ ├── ProductList.tsx
│ │ └── ProductList.css
│ ├── 02-hooks-practice/
│ │ ├── CounterWithHistory.tsx
│ │ ├── CounterWithHistory.css
│ │ ├── TodoListWithFilter.tsx
│ │ └── TodoListWithFilter.css
│ └── 03-api-practice/
│ ├── UserList.tsx
│ ├── UserList.css
│ ├── PostManager.tsx
│ └── PostManager.css
└── todo-app/ # 🎯 완성된 Todo 앱
├── package.json
├── tsconfig.json
├── vite.config.ts
├── index.html
└── src/
├── main.tsx
├── App.tsx
├── App.css
├── index.css
├── types/
│ └── todo.ts
└── components/
├── TodoInput.tsx
├── TodoInput.css
├── TodoList.tsx
├── TodoList.css
├── TodoItem.tsx
├── TodoItem.css
├── TodoFilter.tsx
└── TodoFilter.css
# Session 1 - JavaScript & TypeScript
session1-js-ts/01-variables-and-types.md
session1-js-ts/02-functions-and-arrays.md
session1-js-ts/03-async-programming.md
session1-js-ts/04-typescript-basics.md
# Session 2 - React
session2-react/01-react-fundamentals.md
session2-react/02-hooks-and-state.md
session2-react/03-api-integration.md
session2-react/04-todo-app-tutorial.md# JavaScript 파일 실행
node session1-js-ts/exercises/01-variables-practice.js
node session1-js-ts/exercises/02-functions-practice.js
node session1-js-ts/exercises/03-async-practice.js
# TypeScript 파일은 ts-node로 실행
npx ts-node session1-js-ts/exercises/04-typescript-practice.ts# Vite 프로젝트 생성
npm create vite@latest react-practice -- --template react-ts
cd react-practice
npm install
# 실습 파일 복사
mkdir src/components
cp session2-react/exercises/01-react-basics-practice/*.tsx src/components/
cp session2-react/exercises/01-react-basics-practice/*.css src/components/
# 개발 서버 실행
npm run dev상세한 실습 방법은 exercises/README.md 참고
cd session2-react/todo-app
npm install
npm run dev브라우저에서 http://localhost:5173 열기
이 스터디를 마치면 다음을 할 수 있습니다:
- 모던 JavaScript(ES6+) 문법 활용
- const/let, 화살표 함수, 구조 분해, 스프레드
- 배열 메서드를 활용한 데이터 처리
- map, filter, reduce, find, some, every
- 비동기 프로그래밍
- Promise, async/await, try-catch
- API 통신
- fetch API, JSON 처리
- 기본 타입 시스템 이해
- Interface, Type, Union, Generic
- 타입 안정성을 갖춘 코드 작성
- 컴파일 타임 에러 방지
- React 컴포넌트 기반 UI 구현
- 함수형 컴포넌트, JSX, Props
- React Hooks를 사용한 상태 관리
- useState, useEffect
- 컴포넌트 간 데이터 전달
- Props, State 끌어올리기
- 완전한 CRUD 애플리케이션 개발
- Todo 앱 (추가/수정/삭제/필터링)
# Node.js 확인 (v18 이상 권장)
node --version
npm --version
# Vite로 React + TypeScript 프로젝트 생성
npm create vite@latest my-react-app -- --template react-ts
cd my-react-app
npm install
# 개발 서버 실행
npm run dev- 코드 에디터: VS Code
- VS Code 확장 프로그램:
- ES7+ React/Redux/React-Native snippets
- Prettier - Code formatter
- ESLint
- HTML 기본 구조 이해
- CSS 기본 스타일링
- 터미널 기본 명령어 (cd, ls, npm)
- JavaScript.info - 모던 JavaScript 튜토리얼
- React 베타 문서 (한글)
- TypeScript Handbook (한글)
- JSONPlaceholder - 무료 테스트 API
- 학습 자료 읽기 - 개념 이해
- 예제 코드 따라하기 - 직접 타이핑
- 실습 문제 풀기 - 스스로 구현
- 솔루션 비교 - 더 나은 방법 찾기
- 커스터마이징 - 추가 기능 구현
- 브라우저 개발자 도구 (F12) 적극 활용
console.log()로 데이터 확인- React DevTools 확장 프로그램 설치
- TypeScript 에러 메시지 꼼꼼히 읽기
- GitHub에 코드 업로드
- 포트폴리오 프로젝트 만들기
- 다른 사람의 코드 리뷰
- 오픈소스 프로젝트 기여
이 스터디를 완료했다면:
- React Router (페이지 라우팅)
- Context API (전역 상태 관리)
- React Query (서버 상태 관리)
- 커스텀 Hooks
- 성능 최적화 (memo, useMemo, useCallback)
- Redux Toolkit
- Zustand
- Recoil
- Styled Components
- Tailwind CSS
- CSS Modules
- Jest
- React Testing Library
- E2E 테스트 (Playwright, Cypress)
- Vercel
- Netlify
- GitHub Pages