게시글 삭제
정말 삭제하시겠습니까?
성능 최적화, 이렇게 시작하니 쉬워졌습니다(React Server Component)
[주요 목차]
리액트 서버 컴포넌트란?
JS 번들 사이즈 줄이기
리팩토링 과정과 실전 팁
안녕하세요, 여러분! 오늘은 리액트 서버 컴포넌트를 활용해 성능 최적화를 어떻게 할 수 있는지에 대해 이야기해보려고 해요. 최근에 애플리케이션의 성능과 사용자 경험이 중요해지면서, JS 번들 사이즈를 줄이는 것이 필수가 되었죠. 이 글을 통해 리액트 서버 컴포넌트의 기본 개념과 함께, 실제 리팩토링 과정을 통해 성능을 최적화하는 방법을 알아볼 거예요. 이를 통해 여러분도 자신의 프로젝트에 쉽게 적용할 수 있을 거예요. 자, 그럼 시작해볼까요?
성능 최적화, 이렇게 시작하니 쉬워졌습니다(React Server Component) · 참고 컷 1
리액트 서버 컴포넌트란?
리액트 서버 컴포넌트는 클라이언트가 아닌 서버에서 렌더링되는 컴포넌트를 의미해요. 이 컴포넌트는 서버에서 데이터를 가져와 클라이언트에 전달하기 때문에, 초기 로딩 속도가 빨라지고 사용자 경험이 개선되는 효과가 있죠. 서버에서 렌더링된 컴포넌트는 클라이언트로 전달되는 JS 코드의 양을 줄여주기 때문에, 번들 사이즈를 줄이는 데 큰 도움이 돼요.
예를 들어, 서버 컴포넌트를 사용하면 클라이언트의 JS 번들이 4.65K바이트에서 3.3K바이트로 줄어들 수 있죠. 이는 사용자에게 더 빠른 로딩 시간을 제공하고, 전반적인 성능을 개선하는 데 기여해요. 따라서 리액트에서 서버 컴포넌트를 도입하는 것은 성능 최적화의 첫 걸음이 될 수 있습니다.
성능 최적화, 이렇게 시작하니 쉬워졌습니다(React Server Component) · 핵심 장면 2
JS 번들 사이즈 줄이기
JS 번들 사이즈를 줄이는 방법은 여러 가지가 있지만, 리액트 서버 컴포넌트를 활용하는 것이 가장 효과적이에요. 성능 최적화를 위해서는 두 가지 기준을 기억해야 해요. 첫 번째는, 가능한 한 하위 컴포넌트에서 use client를 선언하는 것이고, 두 번째는 이벤트 핸들러와 훅을 사용하는 컴포넌트는 클라이언트 컴포넌트로 남겨야 한다는 거예요.
예를 들어, 어사인 리스트 컴포넌트를 서버 컴포넌트로 만들고, 이벤트 핸들러가 필요한 아이템 컴포넌트만 클라이언트 컴포넌트로 남기는 방식으로 리팩토링할 수 있어요. 이렇게 하면 불필요한 코드가 클라이언트 쪽으로 전달되지 않으므로, 번들 사이즈를 줄일 수 있죠.
리팩토링 전후의 번들 사이즈를 비교해보면, 성능의 차이를 쉽게 확인할 수 있어요. 초기 번들이 4.65K였던 것이 리팩토링 후 3.3K로 줄어들면서, 페이지 로딩 속도와 성능이 개선된 걸 확인할 수 있답니다.
성능 최적화, 이렇게 시작하니 쉬워졌습니다(React Server Component) · 본문 이미지 3
리팩토링 과정과 실전 팁
리팩토링 과정은 생각보다 간단해요. 우선, 이벤트 핸들러가 필요한 컴포넌트를 식별하고, 이를 하위 컴포넌트로 이동시키는 작업을 진행해요. 예를 들어, 어사인 리스트 컴포넌트에서 아이템 컴포넌트로 클릭 이벤트 핸들러를 이동시켜야 해요.
이 과정에서 중요한 점은 상태 관리를 URL로 처리하는 것인데요. 이렇게 하면 글로벌 상태를 사용하지 않고도 컴포넌트 간의 데이터를 쉽게 공유할 수 있어요. URL 쿼리 파라미터를 활용해 선택된 아이디를 관리하면, 상태가 없기 때문에 서버 컴포넌트로 만들기 쉬워지는 거죠.
리팩토링을 완료한 후에는 next.config.js 파일을 수정하여 번들 분석 도구를 설정해주면, 최적화된 번들의 사이즈를 확인할 수 있어요. 이렇게 최적화가 완료된 후, 실제로 페이지를 테스트해보면 성능 개선을 체감할 수 있을 거예요.
[자주 묻는 질문]
리액트 서버 컴포넌트의 장점은 무엇인가요?
리액트 서버 컴포넌트는 클라이언트가 아닌 서버에서 렌더링되기 때문에 초기 로딩 속도가 빨라지고, JS 번들 사이즈를 줄여 성능을 개선할 수 있어요. 이는 사용자 경험을 향상시키는 데 큰 도움이 됩니다.
성능 최적화를 위해 리팩토링할 때 주의할 점은?
리팩토링 시에는 이벤트 핸들러와 훅을 사용하는 컴포넌트를 식별하고, 이러한 컴포넌트를 하위로 이동시켜 클라이언트 컴포넌트로 남겨야 해요. 이를 통해 서버 컴포넌트의 이점을 극대화할 수 있습니다.
JS 번들 사이즈를 줄이기 위한 가장 효과적인 방법은?
리액트 서버 컴포넌트를 활용하여 클라이언트로 전달되는 코드의 양을 줄이는 것이 가장 효과적이에요. 이외에도 코드 스플리팅과 트리 쉐이킹 같은 기법을 활용할 수 있습니다.