1. React.js ์ ๋ฐฉ์
1.1 ๊ธฐ์กด์ React ๋ CSR ๋ฐฉ์์ผ๋ก ํ๋ฉด์ ๋ ๋๋ง ํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธก์์ ํ๋ฉด์ ์ง์ ๋ ๋๋ง ํฉ๋๋ค.
- ์ฆ, ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์ ๊ฐ ๋ณด๋ UI ๋ฅผ ๋ง๋ญ๋๋ค.
- React ๋ก ๋ง๋ค์ด์ง ํ๋ฉด์ ๋ชจ๋ ๊ฒ์ HTML ์์ค์ฝ๋ ์์ ๋ค์ด์์ง ์์ต๋๋ค.
- React ๋ก ๋ง๋ค์ด์ง ์ฑ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ก ํ์ธํ๋ฉด, ํ๋์
<div>
๋ง์ ๊ฐ์ง๊ณ ์์ ๊ฒ ์ ๋๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ HTML ์ ๊ฐ์ ธ์ฌ ๋ ๋น์ด์๋ div ์ผ๋ก ๊ฐ์ ธ์ต๋๋ค.
๊ทธ ํ, ๋ธ๋ผ์ฐ์ ๊ฐ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์์ฒญํด์ ์๋ฐ์คํฌ๋ฆฝํธ์ React.js ๋ฅผ ์คํ ์ํค๊ณ ๊ทธ ๋ค์ ํ๋ฉด์ด ์ ์ ์๊ฒ ๋ณด์ด๊ฒ ๋ฉ๋๋ค.
1.2 ๋ง์ฝ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ ธ์ค๋ ์๋๊ฐ ๋๋ฆฌ๋ค๋ฉด?
์ฌ์ฉ์๋ ํ๋ฉด์ด ๋ ๋๋ง ๋๋ ์๊ฐ์ ์ค๋ ๋์ ๊ธฐ๋ค๋ ค์ผ ํ ๊ฒ ์
๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ์์ ๋์๋ง UI ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
2. Next.js - Pre Render
ํ์ด์ง์ ์์ค์ฝ๋ ์ด๋๊ฐ์ ์ค์ HTML ์ด ์กด์ฌ ํฉ๋๋ค.
- ๋ฐ๋ผ์ ์ฐ๊ฒฐ ์๋๊ฐ ๋๋ฆฌ๊ฑฐ๋, ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์์ ํ ๋นํ์ฑํ ๋์์ด๋ ์ ์ด๋ ์ ์ ๋ HTML ์ ๋ณผ ์ ์์ต๋๋ค.
Next ๋
๋ชจ๋ ํ์ด์ง๊ฐ ์ฌ์ฉ์์๊ฒ ์ ํด์ง๊ธฐ ์ ์ HTML์ ๋ฏธ๋ฆฌ ์์ฑํด์ Pre Rendering ์ ์ํ ํฉ๋๋ค.
- create-react-app์ผ๋ก ๋ง๋ ์ผ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ผ ๊ฒฝ์ฐ js ๊ธฐ๋ฅ์ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ณด์ด์ง ์๊ฒ ๋๋๋ฐ, ํ๋ฆฌ ๋ ๋๋ง๋ next ์ฑ์ ์๋ฒ์์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ js ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๋๋ผ๋ ๋ณผ ์ ์์ต๋๋ค.
2.1 Pre-Rendering์ ๊ณผ์
2.1.1 initial load html
JS ๋์๋ง ์๋ HTML์ ๋จผ์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋๋ฐ, ์์ง JS ํ์ผ์ด ๋ก๋๊ฐ ๋์ง ์์๊ธฐ์
<Link> ๊ฐ์ ์ปดํฌ๋ํธ๋ ๋์ํ์ง ์์ต๋๋ค.
2.1.2 hydration
HTML ์ ๋ก๋ํ ๋ค js ํ์ผ์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ HTML ๊ณผ ์ฐ๊ฒฐ์ํค๋ ๊ณผ์ ์ ๋๋ค.
ํด๋น ๊ณผ์ ์์ react ์ปดํฌ๋ํธ๋ ์ด๊ธฐํ๋๊ณ ์ฌ์ฉ์์ ์ํธ์์ฉ ํ ์ค๋น๋ฅผ ํฉ๋๋ค.
2.2 Pre-Rendering ์ ๋ ๊ฐ์ง ๋ฐฉ์
HTML ์ ๋ง๋๋ ์์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
2.2.1 Static Generation (SSG)
HTML ์ ๋น๋ ํ์์ ์์ฑํ๊ณ ๊ฐ ์์ฒญ์ ๋ฐ๋ผ์ ์ฌ์ฌ์ฉ ํฉ๋๋ค.
- ๋์ผํ HTML ์ ๋งค ์์ฒญ๋ง๋ค ์์ฑํด์ ์ฐ๋ SSR ์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด์ ํ์ํ ๊ธฐ๋ฒ ์ ๋๋ค.
- Next.js ๋ด๋ถ์ ์กด์ฌํ๋ Pre-Render ๋ฉ์๋๊ฐ ์ต์ด์ HTML ์ build ํ ๋ ๋์ ํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ Pre-Render ๋ HTML ํ์ผ์ ์์ฒญ์ ๋ฐ๋ผ ์ฌ์ฌ์ฉ ๋ฉ๋๋ค.
SSG์ 2๊ฐ์ง ์ํฉ
- Page ์ ๋ด์ฉ๋ฌผ์ด ์ธ๋ถ ๋ฐ์ดํฐ์ ์์กด์ ์ธ ์ํฉ => getStaticProps
- Page Paths ๊น์ง ์ธ๋ถ ๋ฐ์ดํฐ์ ์์กด์ ์ธ ์ํฉ => getStaticPaths
2.2.2 Server Side Rendering (SSR)
HTML์ ๊ฐ ๋ฆฌํ์คํธ๊ฐ ์ผ์ด๋ ๋ ๋ง๋ค ์์ฑ ํฉ๋๋ค.
3. ๋ง์ฝ Pre-Rendering์ด ์๋ค๋ฉด?
JS ์ ์ฒด๊ฐ ๋ก๋๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ต์ด Load์์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง์ง ์๊ฒ ๋ฉ๋๋ค.
์ฆ, ์ฐ๋ฆฌ๋ ์ ์ฒด ํ์ด์ง๊ฐ ๋ก๋๋๊ธฐ ์ ๊น์ง ํ์ด์ง๋ฅผ ๋ณผ ์ ์๋ค๋ ๋ป์ด ๋๊ณ ๊ฒฐ๊ตญ UX๋ ๋ฎ์ ํ๊ฐ๋ฅผ ๋ฐ๊ฒ ๋ ์ ์์ต๋๋ค.
4. Pre-rendering ๊ณผ SEO์ ์๊ด๊ด๊ณ
- CSR ๋ง ์ ๊ณตํ๋ค๋ฉด Client(๋ธ๋ผ์ฐ์ ) ์ฒ๋ผ ๋์ํ์ง ์๋ ๊ฒ์์์ง์ ๊ฒฝ์ฐ ์๋ฌด๋ฐ ๋ฐ์ดํฐ๋ ๊ฐ์ ธ๊ฐ ์ ์์ต๋๋ค.
- Pre-render ๋ฅผ ํด๋๋ฉด Client ์ฒ๋ผ ๋์ํ์ง ์๋ ๊ฒ์์์ง์๊ฒ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณต ํ ์ ์์ต๋๋ค.
์ฐธ๊ณ
'๐ Front-End > Next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Next.js - Link (0) | 2022.10.26 |
---|---|
Next.js - Routing (0) | 2022.10.26 |
Next.js - Data Fetching (0) | 2022.10.26 |
React์ ๋ฌธ์ ์ ๊ณผ NextJS์ ๋์ (0) | 2022.10.26 |
Next.js ์ ์ (0) | 2022.10.26 |