Document ์ปดํฌ๋ํธ
Next.js์๋ <html>
ํ๊ทธ์ <body>
ํ๊ทธ๋ฅผ ์กฐ์ํ๊ธฐ ์ํด์ <Document>
์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๋ค.
Build ์์ ์ _document.js
ํ์ผ์ pages ๋๋ ํ ๋ฆฌ ์์์ ํ์ํ๊ณ <Document>
๋ฅผ extends ํ ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด์ ์ปค์คํ
์ค์ ์ ๋ฐ์๋คํ๋๋ฐ, ์ด๋ ํ์ ํ์ผ์ ์๋๋ฉฐ, ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ์ปค์คํ
ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ Next์ ๋ชจ๋์ ์กด์ฌํ๋ _document.js
ํ์ผ์ ์คํ์ํจ๋ค.
ํ๋ก์ ํธ๊ฐ ์ปค์ง ์๋ก HTML ํ๊ทธ๋ฅผ ์กฐ์ํด์ผํ ์ผ๋ค์ด ๋ง์์ง๋ฏ๋ก ์ฐ๋ฆฌ๋ _document.js
์ <Document>
์ปดํฌ๋ํธ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๋ฅ๋ ฅ์ด ์์ด์ผ ํ๋ค.
๊ธฐ๋ณธ ๊ตฌ์กฐ
pages ๋๋ ํ ๋ฆฌ ์๋์ _document.js
ํ์ผ์ ์์ฑํ๋ค.
import Document, { Html, Head, Main, NextScript } from 'next/document'
class MyDocument extends Document {
static async getInitialProps(ctx) {
const initialProps = await Document.getInitialProps(ctx)
return { ...initialProps }
}
render() {
return (
<Html>
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
)
}
}
export default MyDocument
<Document>
๋ Class ํ ์ปดํฌ๋ํธ๋ง ์ง์ํ๋ฉฐ ๋ค์ 4๊ฐ์ง ์ปดํฌ๋ํธ๋ ํ์๋ก ์กด์ฌํด์ผ ํ๋ค.
<Html>
<Head>
<Main>
<NextScript>
์ฌ๊ธฐ์ ์ค๋ช
ํ์ง ์๋ <Main>
๊ณผ <NextScript>
๋ ์ด๊ณณ์์ ํ์ธํ ์ ์๋ค.
์ฃผ์
import Document, { Html, Head, Main, NextScript } from 'next/document'
๊ทธ๋ฆฌ๊ณ 4๊ฐ์ง ํ์ ์ปดํฌ๋ํธ๋ ์์ ๊ฐ์ด next/document
์์ import ํด์ผํ๋ค.
์ฐ๋ฆฌ๋ next/head
์์ ์ ๊ณตํ๋ <Head>
์ปดํฌ๋ํธ๋ฅผ ์ง๋ ์๊ฐNext์์ head ํ๊ทธ๋ฅผ ์กฐ์ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ด์ ์ด ์๋ค.
๊ทธ๊ฒ๊ณผ ์ฌ์ฉ๋ฒ ์ฉ๋๊ฐ ์กฐ๊ธ ๋ค๋ฅธ๋ฐ,
next/head
์ Head ์ปดํฌ๋ํธ
next/head
์ Head ์ปดํฌ๋ํธ๋ ํน์ ํ์ด์ง์์ ๋ฐ๋๋ Head ํ๊ทธ์์ ์ฌ์ฉํด์ผํ๋ค.
์๋ฅผ ๋ค์ด ํ์ด์ง๋ง๋ค ๋ฐ๋๋ <title>
ํ๊ทธ๋ฅผ ์ ์ฉํ ๊ฒฝ์ฐ, ์ด๋ pages ๋๋ ํ ๋ฆฌ ๋ด์ ์๋ ์ปดํฌ๋ํธ์์ next/head์ <Head>
์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด์ผํ๋ค.
next/document
์ Head ์ปดํฌ๋ํธ
next/document
์ Head ์ปดํฌ๋ํธ๋ ๋ชจ๋ ํ์ด์ง์์ ์ฌ์ฉํ Head ์์ฑ๋ค์ ์กฐ์ํ ๋ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค์ด ํ์ด์ง์ ์ธ์ด ์ค์ ์ธ <lang>
๊ณผ ๊ฐ์ ์์ฑ์ผ ๊ฒฝ์ฐ _document.js
์์ next/document์ <Head>
๋ฅผ import ํ์ฌ ์ฌ์ฉํ๋ค.
๋์ผ๋ก
์ด๋ ๊ฒ ์ค๋์ document.js ํ์ผ์์ Html ๊ตฌ์กฐ๋ฅผ ์กฐ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์๋ค.
Document
์ปดํฌ๋ํธ๋ ์ค๋ก์ง ์๋ฒ์์๋ง ๋ ๋๋๋ฏ๋ก onClick
๊ณผ ๊ฐ์ ์ด๋ฒคํธ ํจ๋ค๋ฌ๋ ์๋ํ์ง ์๋๋ค.
๋ํ <Main />
๋ฐ์ ์๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ์ง ์๊ณ , ๋ง์ฝ HTML์ ํญ์ ์กด์ฌํ๋ NavBar์ด๋ SideBar๊ณผ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ์ ์ฉ์ํค๊ณ ์ถ๋ค๋ฉด App
์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
App
์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ํด๋น ์นดํ
๊ณ ๋ฆฌ๋ฅผ ํ์ธํด๋ณด๋ฉด ๋๋ค!
๋๊ธ