Remix의 서버사이드와 클라이언트사이드 처리 방식에 대해 설명해드리겠습니다:
- 서버사이드 렌더링 (SSR)
- Remix는 기본적으로 모든 페이지를 서버에서 먼저 렌더링합니다.
- loader 함수는 서버에서만 실행되며, 데이터 페칭을 처리합니다.
- 서버에서 렌더링된 HTML이 클라이언트로 전송되어 초기 페이지 로드가 빠릅니다.
- 서버사이드에서는 process.env와 같은 Node.js 환경 변수에 접근할 수 있습니다.
- 클라이언트사이드 하이드레이션
- 서버에서 렌더링된 HTML이 클라이언트에 도착하면, JavaScript가 실행되어 페이지를 "하이드레이션"합니다.
- useLoaderData와 같은 훅을 통해 서버에서 가져온 데이터를 클라이언트에서 사용할 수 있습니다.
- 클라이언트사이드에서는 window 객체와 같은 브라우저 API에 접근할 수 있습니다.
- 환경 변수 처리
Apply to api.ts
- 데이터 흐름
Apply to api.ts
- 주요 특징
- 프로그레시브 향상: JavaScript가 비활성화되어 있어도 기본 기능이 작동합니다.
- 부분 업데이트: 페이지 전체를 다시 로드하지 않고 필요한 부분만 업데이트합니다.
- 중첩 라우팅: 부모-자식 관계의 라우트에서 데이터를 효율적으로 로드합니다.
- 환경별 처리 예시
Apply to api.ts
- 성능 최적화
- 서버사이드 렌더링으로 초기 로드 시간 단축
- 클라이언트사이드 네비게이션으로 페이지 전환 최적화
- 데이터 캐싱과 재사용으로 불필요한 요청 감소
- 보안
- 민감한 환경 변수는 서버사이드에서만 접근 가능
- API 키나 비밀번호는 클라이언트에 노출되지 않음
- 서버사이드에서 데이터 검증 가능
이러한 구조로 인해 Remix는 SEO에 최적화되어 있으며, 사용자 경험도 뛰어납니다. 서버사이드와 클라이언트사이드의 장점을 모두 활용할 수 있는 하이브리드 렌더링 방식을 제공합니다.