<aside> 🧑🏻🏫 Next.js에는 SPA에서 하나의 html역할을 하는 index.html이 물리적으로 존재하지 않습니다.
하지만, 링크로 font 파일을 가져오거나, script 태그로만 넣을 수 있는 라이브러리가 필요하거나, Google Analytics 같은 것을 설정할 때 html의 head태그와 body태그가 필요합니다.
Next.js에서 이 역할을 하는 것이 _document.js입니다.
</aside>
대부분의 상황에서 필요할 수 밖에 없으므로 _document.js를 추가해보도록 하겠습니다. pages폴더 바로 밑에 _document.tsx
이름으로 생성해야 하며, 다음 코드와 똑같이 작성해주세요.
import Document, { DocumentContext, Html, Head, Main, NextScript } from 'next/document';
class MyDocument extends Document {
static async getInitialProps(ctx: DocumentContext) {
const initialProps = await Document.getInitialProps(ctx);
return { ...initialProps }
}
render() {
return (
<Html>
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
)
}
}
export default MyDocument;
Html
, Head
, Main
, NextScript
컴포넌트는 build후에 html
, head
, main
, script
태그가 됩니다.//생략
render() {
return (
<Html>
<Head>
<link
href="<https://fonts.googleapis.com/css?family=Noto+Sans+KR|Poppins&display=swap>"
rel="stylesheet"
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}