KAKAO.GG
프론트엔드

Next.js App Directory로 SSR과 CSR을 한 번에!

65870717953200389e7820de
2024. 7. 8.
조회 111
#next.js란, next.js node.js 차이, next.js 단점, next.js로 만든 사이트, next.js 사용법, next.js 장점, next.js 백엔드, next.js 설치, Nextjs 시작하기

Next.js App Directory

Next.js는 React 애플리케이션을 위한 인기 있는 프레임워크로, 서버 사이드 렌더링(SSR)과 정적 사이트 생성(SSG)을 쉽게 구현할 수 있도록 도와줍니다. Next.js를 사용하면 빠르고 SEO 친화적인 웹 애플리케이션을 개발할 수 있습니다.

 

1. Next.js란?

Next.js는 React 기반의 프레임워크로, Vercel에서 개발 및 유지보수하고 있습니다. 이 프레임워크는 서버 사이드 렌더링과 정적 사이트 생성을 지원하여 웹 애플리케이션의 성능과 SEO를 개선합니다.

 

2. 주요 기능

  • 서버 사이드 렌더링 (SSR): 클라이언트 측에서 데이터를 렌더링하기 전에 서버에서 페이지를 생성하여 초기 로드 시간을 단축합니다.

  • 정적 사이트 생성 (SSG): 빌드 시점에 HTML을 생성하여 정적 파일로 배포합니다. 빠른 로드 시간과 뛰어난 성능을 제공합니다.

  • API 라우팅: 내장 API 라우트를 통해 백엔드 서버 없이도 API를 쉽게 구축할 수 있습니다.

  • 이미지 최적화: 자동으로 이미지 크기를 조정하고, 형식을 변환하여 페이지 로드 속도를 향상시킵니다.

  • CSS 및 Sass 지원: CSS 모듈과 Sass를 기본적으로 지원하여 스타일링을 더욱 간편하게 할 수 있습니다.

  • App Directory: Next.js 13에서 도입된 새로운 구조로, 더 나은 파일 및 폴더 관리를 제공합니다.

 

3. Next.js 시작하기

Next.js 프로젝트를 시작하는 것은 매우 간단합니다. 아래의 명령어를 통해 새로운 Next.js 애플리케이션을 생성할 수 있습니다.

npx create-next-app my-next-app

cd my-next-app

npm run dev

 

로컬 서버에서 Next.js 애플리케이션이 실행됩니다. 브라우저에서 http://localhost:3000을 열어 확인할 수 있습니다.

 

4. App Directory와 라우팅 

Next.js 13부터는 app 디렉토리를 사용하여 더 강력하고 유연한 라우팅을 설정할 수 있습니다. app 디렉토리에 파일을 추가하면 자동으로 해당 경로가 생성됩니다.

// app/page.js
export default function Home() {
    return <h1>Welcome to Next.js App Directory!</h1>;
}

 

5. 데이터 패칭 

Next.js는 다양한 데이터 패칭 방법을 제공합니다. getStaticProps, getServerSideProps, getStaticPaths와 같은 전통적인 방법 외에도 app 디렉토리에서 서버 컴포넌트를 활용하여 데이터를 가져올 수 있습니다.

 

6. 레이아웃과 중첩된 라우팅

App Directory는 중첩된 레이아웃과 라우팅을 더 쉽게 관리할 수 있게 해줍니다. layout.js 파일을 사용하여 공통 레이아웃을 정의할 수 있습니다.

// app/layout.js
export default function RootLayout({ children }) {
    return (
        <html>
            <body>
                <nav>Navigation Bar</nav>
                <main>{children}</main>
            </body>
        </html>
    );
}

// app/page.js
export default function Home() {
    return <h1>Welcome to the Home Page</h1>;
}

// app/about/page.js
export default function About() {
    return <h1>About Us</h1>;
}