Next.js ์ฐ๋ค ๋ณด๋ฉด ํ์ด์ง ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ด 2๊ฐ์ง(SSR / SSG)์ธ๋ฐ,
๋งจ๋ ํท๊ฐ๋ ค์ ์ด๋ฒ์ ์ฐจ์ด์ ์ด๋ ์ธ์ ๋ญ ์จ์ผ ํ๋์ง ์ ๋ฆฌํด๋ดค๋ค.
getServerSideProps
(SSR)์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋ ๋๋ง
์ฆ, ๋งค ์์ฒญ๋ง๋ค HTML์ ์๋ก ๊ทธ๋ฆฐ๋ค
export async function getServerSideProps(context) {
const res = await fetch('https://api.example.com/data');
const data = await res.json();
return { props: { data } };
}
getStaticProps
(SSG)๋น๋ ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ HTML์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๋ค
์ ์ ๊ฐ ์ ์ํ ๋ ์ด๋ฏธ ๋ง๋ค์ด์ง ์ ์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค
export async function getStaticProps() {
const res = await fetch('https://api.example.com/data');
const data = await res.json();
return { props: { data } };
}
ISR (Incremental Static Regeneration)
SSG์ ๋จ์ ๋ณด์์ฉ. ์ผ์ ์๊ฐ๋ง๋ค ์ ์ ํ์ด์ง๋ฅผ ์ฌ์์ฑ
export async function getStaticProps() {
const data = await fetchData();
return {
props: { data },
revalidate: 10, // 10์ด๋ง๋ค ํ์ด์ง ์ฌ์์ฑ
};
}
์ด ๊ธฐ๋ฅ ๋๋ถ์ "๊ฑฐ์ ์ ์ ์ด์ง๋ง ์ด๋ ์ ๋ ์ค์๊ฐ ๋๋"๋ ๋ผ ์ ์๋ค.
ํญ๋ชฉ | SSR (getServerSideProps ) | SSG (getStaticProps ) |
---|---|---|
์คํ ์์ | ๋งค ์์ฒญ๋ง๋ค | ๋น๋ ํ์ |
์๋ | ๋๋ฆด ์ ์์ | ๋น ๋ฆ |
์ต์ ๋ฐ์ดํฐ | ํญ์ ์ต์ | ํ์ ์ ISR๋ก ๊ฐฑ์ ๊ฐ๋ฅ |
์ ํฉํ ๊ฒฝ์ฐ | ๋ก๊ทธ์ธ, ๋ง์ดํ์ด์ง ๋ฑ | ๋ธ๋ก๊ทธ, ๊ณต์ง์ฌํญ ๋ฑ ์ ์ ์ธ ํ์ด์ง |
Next.js๋ ์ง์ง ๋ ๋๋ง ์ ๋ต์ด ๋ค์ํด์ ์ข๊ธด ํ๋ฐ,
ํํธ์ผ๋ก ์ธ์ ๋ญ ์จ์ผ ํ ์ง ์ ๋งคํ ๋๊ฐ ๋ง์๋ค.
์ด๋ฒ ์ ๋ฆฌ๋ฅผ ํตํด์ ํ๋ก์ ํธ ์ํฉ์ ๋ง๊ฒ SSR, SSG, ISR์ ์ ํํ ์ ์๋ ๊ธฐ์ค์ด ์๊ธด ๊ฒ ๊ฐ๋ค.
"๋ชจ๋ ํ์ด์ง์ SSR์ ์ฐ๋ ๊ฑด ๋นํจ์จ์ ์ผ ์ ์๋ค. ์ ์ ์ผ ์ ์๋ ๊ฑด ์ ์ ์ผ๋ก!"