본문 바로가기

Dev/Next JS76

Next.js 15 데이터 페칭 및 렌더링 심화: 캐싱, 변형, 에러 처리, 데이터 흐름 관리 이전 포스팅에서는 Next.js 15에서 제공하는 다양한 데이터 페칭 방법과 렌더링 기법에 대해 알아보았습니다. 이번 포스팅에서는 데이터 페칭 과정에서 발생할 수 있는 다양한 상황에 대한 심층적인 내용을 다뤄보겠습니다. 특히, 데이터 캐싱, 데이터 변형, 에러 처리, 그리고 데이터 흐름 관리에 대해 자세히 설명하고, 실제 예시를 통해 이해를 돕겠습니다.데이터 캐싱데이터 캐싱은 동일한 데이터를 반복적으로 요청하는 것을 방지하여 성능을 향상시키는 중요한 기술입니다. Next.js는 데이터를 메모리에 캐싱하여 불필요한 서버 호출을 줄이고, 사용자 경험을 개선할 수 있는 다양한 방법을 제공합니다.SWR: SWR은 stale-while-revalidate의 약자로, 데이터를 로컬에 캐싱하고, 백그라운드에서 데이터.. 2024. 11. 13.
Next.js 15에서 데이터 페칭 및 렌더링: 완벽 가이드 Next.js 15는 데이터 페칭과 렌더링 방식에 있어서 많은 발전을 이루었습니다. 특히, App Router의 도입으로 더욱 유연하고 효율적인 데이터 관리가 가능해졌습니다. 이번 포스팅에서는 Next.js 15에서 제공하는 다양한 데이터 페칭 및 렌더링 방법을 자세히 살펴보고, 실제 예시를 통해 각 방법의 특징과 적절한 사용 시나리오를 설명합니다.Next.js에서 데이터 페칭 및 렌더링의 중요성데이터 페칭과 렌더링은 웹 애플리케이션 개발에서 가장 기본적이면서도 중요한 부분입니다. 사용자에게 동적인 콘텐츠를 제공하고, 최신 정보를 보여주기 위해서는 효율적인 데이터 관리가 필수적입니다. Next.js는 서버 사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR)을 모두 지원하며, 다양한 데이터 페칭 방.. 2024. 11. 12.
Next.js 15의 강력한 라우팅 시스템: 파일 시스템 기반 라우팅의 진화 Next.js 15는 파일 시스템 기반 라우팅 시스템을 더욱 발전시켜 개발자의 생산성을 높이고, 더욱 유연하고 직관적인 라우팅 경험을 제공합니다. 이번 포스팅에서는 Next.js 15의 라우팅 시스템에 대해 심층적으로 살펴보고, 다양한 예시와 함께 실제 활용 방법을 상세하게 설명합니다.Next.js 라우팅의 기본 개념Next.js는 파일 시스템을 기반으로 라우팅을 구성하는 독특한 방식을 채택합니다. 즉, pages 디렉토리 내에 생성하는 파일의 이름과 경로가 곧 URL 경로가 됩니다. 이러한 방식은 직관적이고 유지보수가 용이하며, 컴포넌트 기반 개발 방식과 잘 어울립니다.// pages/about.jsfunction AboutPage() { return About Us;}위 코드는 /about URL에.. 2024. 11. 11.
Next.js 15: 새로운 기능과 향상된 성능으로 더욱 강력해진 Next.js Next.js 15는 React 기반 서버 사이드 렌더링(SSR) 프레임워크의 새로운 이정표를 제시하며, 개발자들에게 더욱 편리하고 효율적인 개발 환경을 제공합니다. 이번 포스팅에서는 Next.js 15의 주요 변경점과 새롭게 추가된 기능들을 자세히 살펴보고, 실제 예제를 통해 어떻게 활용할 수 있는지 알아보겠습니다.1. 자동화된 업그레이드 CLINext.js 15에서는 @next/codemod CLI를 통해 이전 버전에서 새 버전으로의 업그레이드를 자동화했습니다. 이를 통해 수동으로 코드를 변경해야 하는 번거로움을 줄이고, 업그레이드 과정을 간소화할 수 있습니다.npx @next/codemod@canary upgrade latest 2. 비동기 요청 API (중요 변경사항)Next.js 15에서는 비동.. 2024. 11. 8.
[공식문서] NextJS - Deploying Your Next.js App 이 마지막 기본 레슨에서는 Next.js 앱을 프로덕션 환경에 배포하는 방법을 알아보겠습니다. Next.js의 창시자들이 만든 플랫폼인 Vercel에 Next.js 앱을 배포하는 방법을 배우겠습니다. 또한 다른 배포 옵션에 대해서도 이야기할 것입니다. 사전 준비: 이 레슨을 수강하려면 GitHub 계정이 필요합니다. 이 레슨에서 다음을 배우게 됩니다. Next.js 앱을 Vercel에 배포하는 방법 DPS 워크플로우: 개발(Develop), 미리보기(Preview), 배포(Ship) Next.js 앱을 자체 호스팅 제공 업체에 배포하는 방법 시작 코드 다운로드(선택 사항) 이전 레슨에서 진행 중이 아니라면 다음 레슨을 위해 시작 코드를 다운로드하고 설치하고 실행할 수 있습니다. 이렇게 하면 이전 레슨의 .. 2023. 9. 14.
[공식문서] NextJS - API Routes Next.js는 Node.js 서버리스 함수로 API 엔드포인트를 쉽게 생성할 수 있는 API 라우트를 지원합니다. 이 레슨에서는 블로그 앱에는 필수가 아니지만 API 라우트를 사용하는 방법에 대해 간략히 설명하겠습니다. 이 레슨에서 다음 내용을 배울 수 있습니다: API 라우트를 생성하는 방법. API 라우트에 관한 유용한 정보. 시작 코드 다운로드 (선택 사항) 이전 레슨에서 진행하지 않으신다면, 이 레슨을 위한 시작 코드를 다운로드하고 설치한 후 실행할 수 있습니다. 아래 명령을 사용하여 이전 레슨의 결과와 동일한 nextjs-blog 디렉토리를 설정합니다. 이전 레슨을 완료한 경우 이 작업이 필요하지 않습니다. npx create-next-app@latest nextjs-blog --use-npm.. 2023. 9. 14.
[공식문서] NextJS - Dynamic Routes 우리는 인덱스 페이지에 블로그 데이터를 채웠지만 아직 개별 블로그 페이지를 만들지 않았습니다 (여기에 원하는 결과가 있습니다). 이러한 페이지의 URL을 블로그 데이터에 따라 다르게 만들려면 동적 라우트를 사용해야합니다. 이 레슨에서는 다음을 배우게 됩니다: getStaticPaths를 사용하여 동적 라우트를 가진 페이지를 정적으로 생성하는 방법. 각 블로그 게시물의 데이터를 가져오기 위해 getStaticProps를 작성하는 방법. remark를 사용하여 마크다운을 렌더링하는 방법. 날짜 문자열을 깔끔하게 서식화하는 방법. 동적 라우트를 가진 페이지로 연결하는 방법. 동적 라우트에 관한 유용한 정보. 시작 코드 다운로드 (선택 사항) 이전 레슨에서 진행 중이 아니라면 이 레슨을 위한 시작 코드를 다운로.. 2023. 9. 12.
[공식문서] NextJS - Pre-rendering and Data Fetching #9 요청 시간에 데이터 가져오기 빌드 시간이 아닌 요청 시간에 데이터를 가져와야 하는 경우 Server-side Rendering을 시도할 수 있습니다. 서버 사이드 렌더링을 사용하려면 페이지에서 getStaticProps 대신 getServerSideProps를 내보내야(export) 합니다. getServerSideProps 사용 다음은 getServerSideProps의 시작 코드입니다. 우리의 블로그 예제에는 필요하지 않으므로 구현하지 않겠습니다. export async function getServerSideProps(context) { return { props: { // props for your component }, }; } 왜냐하면 getServerSideProps는 요청 시간에 호출되므로.. 2023. 9. 8.
[공식문서] NextJS - Pre-rendering and Data Fetching #8 getStaticProps 세부 정보 getStaticProps에 대해 알아야 할 몇 가지 중요한 정보가 있습니다. 외부 API 가져오거나 데이터베이스 쿼리하기 lib/posts.js에서는 파일 시스템에서 데이터를 가져오는 getSortedPostsData를 구현했습니다. 그러나 외부 API 엔드포인트와 같은 다 른 소스에서 데이터를 가져올 수도 있습니다. 이렇게 하면 아무 문제없이 작동합니다. export async function getSortedPostsData() { // Instead of the file system, // fetch post data from an external API endpoint const res = await fetch('..'); return res.json(); .. 2023. 9. 8.