분류 Reactjs

Next.js가 동적 웹 앱에 SSG를 사용하는 방법

컨텐츠 정보

  • 조회 242 (작성일 )

본문

정적 웹 사이트는 웹 자체만큼 오래되었습니다. 그러나 JavaScript의 부상은 이러한 정적 사이트를 보다 동적으로 만드는 문을 열었습니다.


https://www.freecodecamp.org/news/static-site-generation-with-nextjs/


여기에는 HTML 파일을 직접 빌드 하는 것이 포함될 수 있지만 정적 생성을 활용하여 최신 도구로 앱을 빌드 하려면 어떻게 해야 할까요?



정적 생성이란 무엇입니까? 


정적 생성은 빌드시 웹 사이트 또는 앱을 컴파일하고 렌더링 하는 프로세스를 설명합니다. 출력은 HTML 파일 자체와 JavaScript 및 CSS와 같은 자산을 포함하는 여러 정적 파일입니다.


Static Generation에 대해 들어 본 적이 없지만 그 개념이 익숙한 것처럼 들리면 더 긴 이름 인 Static Site Generation 또는 약어 SSG로 들어 보셨을 것입니다.


정적 생성 중에 어떤 일이 발생합니까? 


우리가 전통적으로 알고 있는 JavaScript 기반 웹 앱은 브라우저에서 런타임에 React 또는 스크립트와 같은 라이브러리를 실행하여 작동합니다.


브라우저가 페이지를 수신하면 일반적으로 많은 콘텐츠가 없는 단순한 HTML입니다. 그런 다음 스크립트를 로드하여 콘텐츠를 페이지로 가져 오는 과정을 수화라고도 합니다.


Static Generation을 사용하면 Next.js와 같은 도구가 대부분 브라우저에서와 같이 컴파일 시간에 해당 페이지를 렌더링하려고 합니다. 이를 통해 첫 번째 로드시 전체 콘텐츠를 제공 할 수 있습니다. 스크립트는 이 과정에서 여전히 페이지를 수화하지만 이상적으로는 변경 사항이 적거나 전혀 변경되지 않습니다.


Next.js는 정적 생성을 어떻게 사용합니까? 


기본적으로 Next.js는 가능한 모든 페이지를 정적으로 생성하려고 시도합니다. 앱이 데이터를 가져 오는 방법을 감지하여 이를 수행합니다.


Next.js는 사용 방법에 따라 Next.js가 앱을 빌드하는 방법을 결정하는 getStaticProps 및 getServerSideProps를 포함하여 데이터를 가져 오는 몇 가지 다른 API를 제공합니다.


getStaticProps 만 사용하여 데이터를 가져 오는 경우 Next.js는 빌드시 해당 데이터를 가져와 완전히 정적 인 페이지를 남깁니다.


getServerSideProps를 사용하는 경우 Next.js는 해당 페이지를 렌더링하기 위해 앱에 서버가 필요함을 인식합니다.


서버 구성을 자동으로 처리하는 Vercel과 같은 배포 솔루션과 함께 Next.js는 누군가 서버에서 페이지를 요청할 때 모든 데이터를 로드합니다.


기본적으로 수행되지는 않지만 Next.js는 앱이 빌드 된 후 별도의 디렉토리에 앱을 정적 파일로 내보내는 기능도 제공합니다.


먼저 다음 빌드 명령을 실행하여 앱을 빌드 한 다음 다음 내보내기를 실행하여 기본적으로 앱을 out 디렉터리에서 정적 파일로 사용할 수 있도록 합니다.


Next.js로 앱을 정적으로 생성하는 방법 


이것이 어떻게 작동하는지 이해하기 위해 새로운 Next.js 앱을 빠르게 만들 수 있습니다.


이에 대한 유일한 요구 사항은 npm과 함께 Node가 설치되어 있고 터미널을 사용하여 명령을 실행할 수 있다는 것입니다.


Next.js 앱을 만드는 방법 


시작하는 것은 터미널에서 한 줄을 실행하는 것만 큼 간단합니다.


프로젝트를 만들려는 디렉토리를 열고 다음을 실행합니다.


npx create-next-app my-static-nextjs-app

설치가 완료되면 새 프로젝트 디렉토리로 이동할 수 있습니다.


cd my-static-nextjs-app

거기에서 개발 서버를 시작하십시오.

npm run dev

서버가 준비되면 브라우저에서 http : // localhost : 3000을 열어 이제 새 Next.js 앱을 볼 수 있습니다!


new-nextjs-app.jpg 


Next.js 앱을 빌드하는 방법 


이제 애플리케이션을 사용할 수 있으므로 빌드 해 보겠습니다.


동일한 디렉토리에서 다음 명령을 실행하십시오.


npm run build

터미널 내부의 출력을 보면 몇 가지 중요한 일이 발생하는 것을 볼 수 있습니다.


첫째, Next.js는 성능 최적화, 앱 컴파일, 데이터 수집 등 빌드 프로세스를 통해 실행 중임을 알려줍니다.

nextjs-build.jpg 


다음으로 Next.js가 각 페이지를 어떻게 구성했는지에 대한 분석을 보여줍니다.


기본 Next.js 시작 템플릿에는 몇 개의 정적 페이지와 예제 API 경로가 포함됩니다.


하단의 범례를 사용하면 모든 페이지와 자산이 API 경로 인 서버가 필요하다고 태그가 지정된 하나의 경로로 정적으로 생성되었음을 알 수 있습니다.

nextjs-static-generation.jpg 


참고 :이 연습에서는 API 경로를 무시할 수 있지만 Vercel과 함께 Next.js는 Next.js API의 일부로 람다 함수를 빌드 하는 기능을 제공합니다.


정적 Next.js 앱을 빌드하는 방법 


Next.js 빌드 출력을 통해 일부 정적 페이지를 빌드했지만 찾는 데 어려움이 있을 수 있습니다. 프로젝트의 폴더와 파일을 보면 해당 파일이 어디에 있는지 즉시 알 수 없습니다.


Next.js가 앱을 빌드 할 때 기본적으로 .next 디렉터리 내에 해당 앱만 출력합니다. 여기에는 Vercel과 같은 도구가 앱을 배포하는 데 사용하고 이해할 수 있는 구성 파일이 포함됩니다.


기술적으로 이 디렉토리에는 전체 앱이 포함되지만 정적 호스팅에 쉽게 배포 할 수 있는 것은 아닙니다.


Next.js는 앱을 내보내는 기능도 제공합니다. 이렇게 하면 우리가 빌드 한 앱을 가져 와서 앱을 배포하는 데 사용할 수 있는 정적 파일 집합을 생성합니다.


package.json 파일 내에서 다음 내보내기를 포함하도록 빌드 스크립트를 업데이트합니다.


"build": "next build && next export",

업데이트 되면 프로젝트 디렉토리에서 빌드 명령을 다시 실행하십시오.

npm run build

이제 마지막 단계에서 했던 것처럼 앱을 빌드했을 뿐만 아니라 Next.js는 우리가 빌드 한 앱도 정적 파일로 내보내고 있음을 알 수 있습니다.


nextjs-exporting-static-app.jpg 



프로젝트 폴더 내부를 살펴보면 이제 호출 된 새 디렉토리를 볼 수 있습니다.


해당 폴더 내부를 살펴보면 앱을 사용하는 데 필요한 모든 CSS 및 JS뿐만 아니라 index.html 파일을 포함하여 정적으로 컴파일 된 전체 앱을 볼 수 있습니다!


nextjs-static-output.jpg 


여기서 우리는 어디로 갈 수 있습니까? 


Next.js와 Static Generation의 개념을 사용하여 앱을 정적으로 컴파일 할 수 있다는 것을 배웠습니다.


Next.js와 같은 도구는 브라우저에서 볼 수 있는 것과 유사하게 코드를 컴파일하여 이를 수행 할 수 있으므로 앱이 브라우저에 도달 할 때까지 모든 준비가 완료됩니다.


간단한 명령으로 앱을 빌드 및 컴파일 할 수있을 뿐만 아니라 정적 파일로 내보낼 수도 있습니다. 이러한 정적 파일을 Vercel 또는 AWS S3와 같은 모든 정적 스토리지 서비스에 배포 할 수 있습니다. 이를 통해 빠르고 저렴한 동적 웹 앱을 쉽게 만들 수 있습니다.


Next.js 문서를 방문하여 Next.js가 다양한 API를 활용하여 정적 및 동적 경험을 제공하는 방법에 대해 자세히 알아보십시오.