원글 : https://nextjs.org/docs/app/building-your-application/rendering
렌더링은 작성한 코드를 유저 인터페이스로 변환한다. 리액트와 Next.js를 사용하면 코드의 일부를 서버 또는 클라이언트에서 렌더링할 수 있는 하이브리드 웹 애플리케이션을 만들 수 있다.
이 글은 이러한 렌더링 환경, 전략 및 런타임의 차이를 이해하는 데 도움이 된다.
우선, 아래 세 가지 기본 웹 개념을 아는 것이 도움이 된다:
웹 애플리케이션이 렌더링되는 2가지 환경이 있다: 클라이언트와 서버
지금까지는, 개발자들은 서버와 클라이언트 코드를 작성할 때 다른 언어(e.g. Javascript, PHP)와 프레임워크를 사용해야 했다. 리액트를 사용하면, 개발자들은 동일한 언어(자바스크립트)와 동일한 프레임워크(e.g. Next.js 혹은 선택한 프레임워크)를 사용할 수 있다.
이러한 유연성을 통해 컨텍스트를 전환하지 않고 두 환경(서버 및 클라이언트 환경)에서 원활하게 코드를 작성할 수 있다.
그러나, 각 환경에는 고유한 기능과 제약이 있다. 따라서 서버와 클라이언트에 대해 작성하는 코드는 항상 같지는 않다. 특정한 작업(e.g. 데이터 fetching 혹은 유저 상태 관리 등)은 한 환경에서 다른 환경보다 더 적합하다.
대락적으로 말하면, 모든 웹사이트는 동일한 요청-응답 생명 주기를 따른다.
GET
, POST
) 및 필요에 따라 추가적인 데이터에 대한 필요한 정보가 포함된 HTTP 요청을 서버로 보낸다.하이브리드 웹 애플리케이션 구축의 주요 부분은 생명주기 내에서 작업을 분할하는 방법과 네트워크 경계를 배치하는 방법을 결정하는 것이다.
웹 개발에서, 네트워크 경계는 다양한 환경을 분리하는 개념적 선이다. (e.g. 클라이언트와 서버 or 서버와 DB)
리액트에서, 개발자들은 클라이언트-서버 네트워크 경계를 가장 합리적인 곳에 배치할 위치를 고른다.
이면에서, 이 작업은 클라이언트 모듈 그래프와 서버 모듈 그래프의 두 부분으로 나뉜다.
서버 모듈 그래프는 서버에서 렌더링되는 모든 컴포넌트가 포함되고, 클라이언트 모듈 그래프에는 클라이언트에서 렌더링되는 모든 컴포넌트가 포함된다.
모듈 그래프는 애플리케이션의 파일이 어떻게 서로 의존하는지 시각적으로 표현하는 것으로 생각하면 유용하다.
리액트의 "use client"
규칙을 사용하여 경계를 정의할 수 있다. 리액트가 클라이언트에 있는 동안 서버에서 계산 작업을 수행하도록 하는"use server"
규칙도 있다.
There's also a "use server"
convention, which tells React to do some computational work on the server while on the client.
이러한 환경에서 작업하는 경우, 애플리케이션의 코드 흐름이 단방향이라고 생각하면 도움이 된다.
즉, 응답하는 동안, 애플리케이션 코드는 서버에서 클라이언트로 한 방향으로 흐른다.
클라이언트에서 서버에 액세스해야 하는 경우, 동일한 요청을 재사용하는 대신 새 요청을 서버로 보낸다. 이렇게 하면 컴포넌트를 렌더링하는 위치와 네트워크 경계를 배치하는 위치를 쉽게 이해할 수 있다.
실제로, 이 하이브리드 모델을 사용하려면 개발자는 결과를 클라이언트에 전송하고 애플리케이션을 인터랙티브하게 만들기 전에 먼저 서버에서 수행하는 작업을 고려할 것을 권장한다.
이 개념은 동일한 컴포넌트 트리에서 클라이언트 컴포넌트와 서버 컴포넌트를 인터리빙하는 방법을 고려하면 더욱 분명해진다.
Next.js 14는 다음과 같은 가장 중점으로 둔 릴리스이다. - Turbopack: App & Pages Router에서 5,000번의 테스트 통과 - 로컬 서버 시작이 53%
2024-03-12Next.js는 렌더링 작업과 데이터 요청을 캐싱하여 어플리케이션의 성능을 향상시키고 비용을 감소시킨다. 기본적으로 Next.js는 성능을 향상시키고 비용을 줄이기 위해 가능한 한
2024-03-12리액트 애플리케이션을 빌드할 때, 애플리케이션의 어느 부분을 서버 또는 클라이언트에서 렌더링할지 고려해야 한다. 이 글은 서버 및 클라이언트 컴포넌트를 사용할 때 권장되는 몇 가지
2024-03-11클라이언트 컴포넌트는 요청 시 클라이언트에서 렌더링할 수 있는 인터랙티브한 UI를 만들 수 있게 해준다. Next.js에서 클라이언트 렌더링은 opt-in으로, 리액트가 클라이언트
2024-03-11# Contact : jyw966@naver.com
Copyright © doromo. All Rights Reserved.