개발자
안녕하세요. 프론트엔드 개발 공부를 하고 있는 학부생입니다. HTML부터 차근차근 학교 공부하듯이 바닐라 JS, React, Next.js 12를 인터넷 강의를 통해 배웠고 지금은 Next.js 13 프로젝트를 개발 중에 있습니다. 저의 짧은 지식 선에서 Next.js의 두드러지는 장점으로는 SSR을 꼽을 수 있다고 생각했는데요, Next.js 13 버전에서는 서버 컴포넌트와 클라이언트 컴포넌트를 구분하여 클라이언트 컴포넌트의 경우 “use client” 코드를 적어주어야 하잖아요. 근데 개발을 하다 보니 거의 모든 컴포넌트에 react hook이 들어가다 보니 모든 컴포넌트 파일에 “use client” 코드를 적고 시작하며 제가 생각했던 Next.js의 장점을 전혀 활용하고 있지 못하다는 생각이 들어 컴포넌트 분리를 잘못하고 있는 건지 React를 쓰던 버릇이 들어 Next.js를 100% 활용하고 있지 못한 건지 의문이 듭니다. 선배님들의 의견과 조언이 궁금합니다!!
답변 1
인기 답변
(공식문서) https://nextjs.org/docs/app/building-your-application/rendering/composition-patterns (관련된 한국어 게시글) https://yozm.wishket.com/magazine/detail/2271/ 참고하시면 큰도움 되실 것 같습니다.
이수
작성자
인클리즈랩 프론트엔드 개발자 • 2023년 11월 24일
참고해보겠습니다 감사합니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 11월 20일
Next.js에서 SSR(Server Side Rendering)을 사용하는 주된 이유는 초기 페이지 로딩 속도를 빠르게 하고, SEO(Search Engine Optimization)를 개선하기 위함입니다. 귀하처럼 React Hook을 많이 사용하면서 "use client"를 적용할 경우 SSR의 장점을 누리기 어려운 점이 있습니다. 그러나 이는 반드시 모든 컴포넌트가 클라이언트 사이드에서만 동작해야 한다는 의미는 아닙니다. 컴포넌트를 분리하는 방법에 대해 생각해볼 필요가 있습니다. 먼저, Hook을 사용하여 상태 관리를 하는 컴포넌트와 그렇지 않은 컴포넌트를 분리하는 것이 좋습니다. 이렇게 구분하면 서버에서 렌더링 할 수 있는 컴포넌트와 클라이언트에서만 동작할 수 있는 컴포넌트가 명확하게 구분되어, Next.js의 SSR 기능을 효과적으로 활용할 수 있습니다. 또한 Next.js에서 제공하는 `getServerSideProps`, `getStaticProps` 등의 함수를 활용하여, 서버사이드에서 데이터를 사전에 가져오는 방식으로도 SSR을 활용할 수 있습니다. 마지막으로, Next.js 13에서 도입된 Midstream SSR이라는 새로운 개념을 활용해 보실 수도 있습니다. 이를 통해 클라이언트 사이드와 서버 사이드에서 모두 렌더링을 수행할 수 있어, 성능을 극대화하는 데 도움이 될 것입니다. Next.js의 SSR 기능을 제대로 활용하기 위해서는 컴포넌트 설계와 데이터 가져오기 전략 등 여러 가지 요소를 고려해야 합니다. 이에 대한 공부를 계속 해나가시면서 Next.js의 풀 패텐셜을 깨닫게 될 것입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!