ํด๋น ๋ธ๋ก๊ทธ ์๋ฆฌ์ฆ๋ ์ ์งํ๊ฒ ๋ฐฐ์๋ณด๋ Next js ์๋ฆฌ์ฆ๋ก์จ ์ด 10๋ถ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
Next.js๊ณต์ ํํ์ด์ง์์ ์ด์ผ๊ธฐํ๋ ๋ด์ฉ์ ์ต๋ํ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ง๊ด์ ์ด๊ฒ ๊ตฌ์ฑํ์์ต๋๋ค.
0. ๋ชฉ์ฐจ
1. create-next-app์ผ๋ก next ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ ํ๊ธฐ
2. create-next-app์์ ๋ง๋ ์ฒซ ๋ฒ์งธ ํต์ฌ pages. ๊ทธ๋ฆฌ๊ณ ๋์ ๋ผ์ฐํ
3. ํ์ด์ง๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ Link-Component ๊ทธ๋ฆฌ๊ณ Pre-Fetch
Dynamic Routing๊ณผ Link๋ฅผ ์ด์ฉํด ๊ฐ๋จํ ๊ฒ์ํ์ ๋ง๋ค์ด๋ณด์.
4. Next.js์์ head ํ๊ทธ๋ฅผ ์กฐ์ํ๋ ๋ฉ์ง ๋ฐฉ๋ฒ
๋ฒ์ธ & ์ค์ต) ์ด๋ฏธ์ง์ ๋์์์ ์ ์ฅํ๊ณ ์ฌ์ฉํด๋ณด์.
5. ์น์ ๋ฐ์ ๊ณผ์ ์ผ๋ก ๋ณด๋ SSG์ SSR
6. next์ ๋ ๋ฒ์งธ ํต์ฌ Pre-Rendering
7. SSG๋ก ๊ฒ์ ์์ง ์ต์ ํ ๋ ธ๋ฆฌ๊ธฐ
8. ์ ์งํ๊ฒ ๋ฐฐ์๋ณด๋ Next.js ์๋ฆฌ์ฆ๋ฅผ ๋ง์น๋ฉฐ..
HTML title ํ๊ทธ
์ฐ๋ฆฌ๋ ๋ง์ ์์ ์น์ ๋์๋๋ ๋ธ๋ผ์ฐ์ ์์ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ์น์ฌ์ดํธ์ ๋ค์ด๊ฐ๋์ง ํ์ธํ๊ธฐ ์ํด์ ํ์ธํ๋ ๊ฒ์ด ์๋ค.
๋ฐ๋ก html ์ title ํ๊ทธ.
์ด๋ฐ title ํ๊ทธ๋ head ํ๊ทธ ๋ด๋ถ์ ์กด์ฌํ๋๋ฐ, ์ด๋ฐ ํ๊ทธ๋ค์ Metadata Contents๋ผ๊ณ ํ๋ค
๊ฒ์ ์์ง์ ์ด Metadata๋ฅผ ์ด์ฉํด์ ํ ๋์ ํด๋น ํ์ด์ง๋ ์ด๋ค ์ ๋ณด๋ฅผ ๋ด๋ ํ์ด์ง์ธ์ง ์ฌ์ฉ์๋ค์๊ฒ ๋ณด์ฌ์ค๋ค.
์ด๋ฐ metadata๋ค์ Search Engine Optimize์ ์ค์ํ ์์๊ฐ ๋๋๋ค.
๋ง์ฝ ์ฐ๋ฆฌ๊ฐ create-react-app
์์ title์ ๋ณ๊ฒฝํ๋ค๊ณ ํด๋ณด์.
- ๊ทธ๋ผ ์ฐ๋ฆฌ๋ ์ฐ์
index.hmtl
ํ์ผ์ ์ฐพ์ ๊ฒ์ด๋ค. - ๊ทธ๋ฆฌ๊ณ
<head><head>
ํ๊ทธ ๋ด์ ์๋<title></title>
ํ๊ทธ๋ฅผ ๋ฐ๊พผ๋ค.
ํน์
- npm ์ผ๋ก react-helmet ์ ์ค์นํ๋ค.
- react-helmet์ ์ด์ฉํด์ ๋ณ๊ฒฝํ๋ค.
๊ทธ๋ผ create-next-app
์์ ๋ฐ๊พผ๋ค๊ณ ์๊ฐํด๋ณด์.
index.html ํ์ผ์ ์ฐพ์ผ๋ ค๊ณ ํด๋ ๋ณด์ด์ง ์์ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค.
nextjs๋ create-react-app
๊ณผ๋ ๋ค๋ฅด๊ฒ index.html
ํ์ผ์ด ์๋ค.
๊ทธ๋์ next์์๋ <head>
ํ๊ทธ ๋ด์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ์๋ค.
Head ์ปดํฌ๋ํธ
๋ง์ฝ ๊ฒ์ํ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๊ทธ๋ผ ํด๋น ๊ฒ์๊ธ์ ํด๋ฆญํด์ ๋ค์ด๊ฐ ๋ ๋ง๋ค ์๋จ ํญ์ ๋ด์ฉ์ ๊ฒ์ํ์ ์ ๋ชฉ์ผ๋ก ๋ฐ๋์ด์ผ ํ๋ค๋ ์๋น์ค๋ฅผ ๋ง๋ ๋ค๊ณ ํ๋ฉด next.js
๊ฐ ๊ฐ๊ณ ์๋ <Head>
์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
import Head from 'next/head'
๊ทธ๋ฆฌ๊ณ ์์์ ๊ฐ์ ํ ๊ฒ์ํ์ ์๋ง ๋ค์๊ณผ ๊ฐ์ ํํ๋ฅผ ๋๊ณ ์์ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ meta ํ๊ทธ๋ฅผ viewport๋ ์ง์ ํด๋ณด์.
import Head from "next/head";
export default function Post({post}) {
return (
<>
<Head>
<title>{post.title}</title>
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
</Head>
<h1>{post.title}</h1>
<p>{post.description}</>
</>
);
}
๊ทธ๋ฆฌ๊ณ ์คํ ๊ทธ๋ํ๋ฅผ ์ด์ฉํด์ sns์ url์ ์ฌ๋ฆฌ๋ฉด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ๊ฐ๋ฅํ Open Graph ๋ฉํ ์ค์ ๋ next๊ฐ ์ ๊ณตํ๋ <Head>
์ปดํฌ๋ํธ ํ๋๋ก ๊ฐ๋ฅํ๋ค.
๋๊ธ