데브허브 | DEVHUB | Reacting to Dan Abramov
- React Server Components(RSC)에 대한 커뮤니티의 의견이 분분한 가운데, Dan Abramov는 Astro를 비교 대상으로 삼아 RSC의 개념을 명확히 설명했습니다. 🗣️
- Astro는 서버에서 HTML을 렌더링하고 클라이언트 측 컴포넌트를 선택적으로 하이드레이션하는 모델을 가지며,
.astro 파일과 client-load, client-visible 같은 명확한 지시어를 통해 서버와 클라이언트 영역을 구분합니다. 🚀
- RSC 또한 기본적으로 서버 렌더링을 사용하지만,
use client 지시어를 통해 클라이언트 측 코드를 명시적으로 지정하며 Astro와 유사한 멘탈 모델을 공유합니다. 💻
- Astro는 서버/클라이언트 구분이 파일 단위로 명확한 반면, RSC는
use client 지시어로 전환되어 학습 초기에는 어떤 컨텍스트에 있는지 계속 생각해야 하는 직관적이지 않은 학습 곡선이 단점으로 지적됩니다. 🧠
- 하지만 RSC는 Astro의 한계를 극복하는 장점도 있습니다. Astro 컴포넌트는 서버 또는 클라이언트 중 하나로 결정되어야 하는 반면, RSC는 컴포넌트가 서버와 클라이언트 양쪽에서 유연하게 사용될 수 있어 더 큰 유연성을 제공합니다. 🤸
- RSC는 React의 가상 DOM 디핑을 활용하여 전체 페이지 리로드 없이 부분 페이지 리로드를 가능하게 하며, MPA 모델임에도 SPA와 유사한 사용자 경험을 제공합니다. 🔄
- Astro는
server defer 지시어를 통해 페이지 로드 후 동적 데이터를 비동기적으로 가져와 초기 로드 시간을 단축할 수 있으며, server islands를 활용하여 특정 영역의 라이브 데이터를 독립적으로 불러올 수 있습니다. ⏳
- Dan Abramov는 Astro가 RSC의 개념을 이해하는 데 더 쉬운 진입점이 될 수 있다고 추천합니다. 🌟