는 리액트 기반의 프레임워크로 SSR을 지원하고 폴더 및 파일 기반의 라우팅을 지원한다.
npx create-next-app@latest
pages/_app.js
export default function App({Component, pageProps}) {
return <Componet {...pageProps} />;
}
// Component는 현재 페이지를 의미한다. 페이지 전환시 Component props가 변경됨
components/layout.js
import Navbar from './navbar'
import Footer from './footer'
export default function Layout({ children }) {
return (
<>
<Navbar />
<main>{children}</main>
<Footer />
</>
)
}
// children은 layout 컴포넌트가 감싸고 있는 다른 컴포넌트
_app.js와 layout.js의 차이가 헷갈렸는데 _app.js은 좀 더 전역적인 내용을 정의한다고 생각하면 될 것 같다. layout은 말 그대로 틀을 만드는 용도로 사용하고.
getLayout
이라는 속성을 쓰면 각 페이지마다 layout을 만드는게 가능하다고 하다.
import Layout from '../components/layout'
import NestedLayout from '../components/nested-layout'
export default function Page() {
return (
/** Your content */
)
}
Page.getLayout = function getLayout(page) {
return (
<Layout>
<NestedLayout>{page}</NestedLayout>
</Layout>
)
}
출처 :
nextjs 공식 페이지
코딩애플
https://moon-ga.github.io/next.js/4-_appjs-and-layout
노마드 코더 NextJS 시작하기