Skip to content

Commit 2c2fdcc

Browse files
committed
feat: server router 및 mock api 추가
1 parent a09061d commit 2c2fdcc

File tree

8 files changed

+794
-15
lines changed

8 files changed

+794
-15
lines changed

CLAUDE.md

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -309,28 +309,82 @@ render(); // 클라이언트 렌더링 시작
309309
310310
### Express SSR 서버
311311
312-
- [ ] Express 미들웨어 기반 서버 구현
313-
- [ ] 개발/프로덕션 환경 분기 처리
314-
- [ ] HTML 템플릿 치환 (`<!--app-html-->`, `<!--app-head-->`)
312+
- [x] Express 미들웨어 기반 서버 구현 (`server.js` 완성)
313+
- [x] 개발/프로덕션 환경 분기 처리
314+
- [x] HTML 템플릿 치환 (`<!--app-html-->`, `<!--app-head-->`)
315315
316316
### 서버 사이드 렌더링
317317
318-
- [ ] 서버에서 동작하는 Router 구현
319-
- [ ] 서버 데이터 프리페칭 (상품 목록, 상품 상세)
318+
- [ ] 서버에서 동작하는 Router 구현 (`main-server.js` 플레이스홀더 상태)
319+
- [ ] 서버 데이터 프리페칭 (상품 목록, 상품 상세) - Mock API 함수 필요
320320
- [ ] 서버 상태관리 초기화
321321
322322
### 클라이언트 Hydration
323323
324-
- [ ] `window.__INITIAL_DATA__` 스크립트 주입
325-
- [ ] 클라이언트 상태 복원
324+
- [x] `window.__INITIAL_DATA__` 스크립트 주입 구조 (`server.js` 완성)
325+
- [ ] 클라이언트 상태 복원 (`main.js`에 하이드레이션 로직 없음)
326326
- [ ] 서버-클라이언트 데이터 일치
327327
328328
### Static Site Generation
329329
330-
- [ ] 동적 라우트 SSG (상품 상세 페이지들)
330+
- [ ] 동적 라우트 SSG (`static-site-generate.js` 플레이스홀더 상태)
331331
- [ ] 빌드 타임 페이지 생성
332332
- [ ] 파일 시스템 기반 배포
333333
334+
## 현재 구현 상태 분석
335+
336+
### ✅ **구현 완료된 부분**
337+
338+
1. **Express 서버 인프라** (`packages/vanilla/server.js`)
339+
- Express 5.x 호환 라우팅 패턴
340+
- 개발/프로덕션 환경별 미들웨어 설정
341+
- Vite 개발 서버 통합
342+
- 템플릿 치환 및 초기 데이터 주입
343+
344+
2. **클라이언트 인프라**
345+
- Router 클래스 (파라미터 추출, 네비게이션)
346+
- Product Store (상태 관리, 액션 처리)
347+
- Product Services (API 호출 로직)
348+
- MSW 기반 Mock API
349+
- 페이지 컴포넌트들
350+
351+
### ❌ **미완성 부분**
352+
353+
1. **서버 렌더링 로직** (`packages/vanilla/src/main-server.js`)
354+
- 현재: 정적 "Hello SSR" 플레이스홀더
355+
- 필요: ServerRouter, 데이터 프리페칭, 실제 HTML 생성
356+
357+
2. **서버 호환 Mock API**
358+
- 현재: 클라이언트용 MSW 핸들러만 존재
359+
- 필요: `mockGetProducts`, `mockGetCategories`, `mockGetProduct` 서버 함수
360+
361+
3. **클라이언트 하이드레이션** (`packages/vanilla/src/main.js`)
362+
- 현재: `window.__INITIAL_DATA__` 처리 로직 없음
363+
- 필요: 서버 데이터로부터 스토어 복원
364+
365+
4. **정적 사이트 생성** (`packages/vanilla/static-site-generate.js`)
366+
- 현재: 기본 플레이스홀더
367+
- 필요: 동적 라우트 생성, 실제 페이지 빌드
368+
369+
## 다음 구현 단계
370+
371+
### 1단계: 서버 호환 Mock API 함수 생성
372+
- `src/api/mockApi.js` 생성 (서버에서 사용 가능한 데이터 함수들)
373+
- 기존 MSW 핸들러 로직을 서버 환경에 맞게 포팅
374+
375+
### 2단계: 서버 사이드 렌더링 완성
376+
- `main-server.js`에 ServerRouter 클래스 구현
377+
- 라우트별 데이터 프리페칭 로직 구현
378+
- 페이지 컴포넌트 활용한 HTML 생성
379+
380+
### 3단계: 클라이언트 하이드레이션 구현
381+
- `main.js`에 초기 데이터 복원 로직 추가
382+
- 서버-클라이언트 상태 동기화
383+
384+
### 4단계: 정적 사이트 생성 완성
385+
- 동적 라우트 생성 (`/product/:id/` 처리)
386+
- 서버 렌더링 로직 재활용하여 정적 파일 생성
387+
334388
## 개발 참고사항
335389
336390
### TypeScript 설정

0 commit comments

Comments
 (0)