ํด๋น ๋ธ๋ก๊ทธ ์๋ฆฌ์ฆ๋ ์ ์งํ๊ฒ ๋ฐฐ์๋ณด๋ Next js ์๋ฆฌ์ฆ๋ก์จ ์ด 8๋ถ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
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 ์๋ฆฌ์ฆ๋ฅผ ๋ง์น๋ฉฐ..
์ฐ๋ฆฌ๋ ๋ค์ ์๊ฐ์ ๋ฐฐ์ธ SSR, Pre-Rendering๊ณผ ๊ฐ์ ๊ธฐ์ ๋ค์ ๋ฐฐ์ฐ๊ธฐ ์ํด์ SSG์ SSR์ ๋ํด์ ์ฐจ์ด๋ฅผ ๋ช ํํ ์ธ์งํด์ผ ํ๋ค.
๋์๊ฒ ์ Next JS๋ฅผ ๋ฐฐ์ฐ๋ ค ํ๋์ง ๋ฌผ์ด๋ณธ๋ค๋ฉด ์๋ง๋ Server Side Rendering์ด๋ผ๊ณ ํ๋ค.
Create-react-app
์ Single Page Application ์ด๋ผ ๊ฒ์ ์์ง ์ต์ ํ๊ฐ ํ๋๋ Next๋ฅผ ์ด์ฉํด์ SSR์ ํด๋ณด๊ณ ์ถ์๋ค.
ํ์ง๋ง next๋ ๋ชจ๋ ํ์ด์ง๋ฅผ SSG ํ๋ค๊ณ ํ๋ค.
์ฅ? ๋ SSR์ ํ๋ฌ ์๋๋ฐ SSG๋ฅผ ํ๋ค๊ณ ?
๊ทธ๋์ ๋ SSG๋ ๋ญ์ง?
๊ทธ๋์ ์ด๋ฒ ๊ธฐํ์ CSR์ ๋ฌด์์ด๊ณ SSG์ SSR์ ๋ญ์ง ์์๋ณด๊ณ ๊ณต์ ํด๋ณด๊ณ ์ ๋ฒ์ธ๋ก ํด๋น ์ฑํฐ๋ฅผ ๋ง๋ค์๋ค.
์ค๋ช ์ ํ๊ธฐ ์ํด์ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ํ ๊น ๊ณ ๋ฏผ์ ํ์๊ณ ๋ง์ ๋ ํผ๋ฐ์ค๋ฅผ ์ฐพ์๋ดค๋๋ฐ, ๋ด๊ฐ ๊ฒช์ด๋ณธ ๋ฐ๋ก ์น์ ์งํ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ๋ฉด์ ํ์ตํ๋๊ฒ ์ ๋ง ๋์์ด ๋ง์ด ๋์๋ค.
์์ํด๋ณด์.
CSR vs SSR vs SSG
์น์ ๋ฐ์ ๊ณผ์
์ฐ์ ์น์ด ์ด๋ค ๊ณผ์ ์ ๊ฑฐ์ณ์ ๋ฐ์ ํ๋์ง ๊ฐ๋ตํ๊ฒ ๊ทธ๋ฆผ์ผ๋ก ํ์ธํด๋ณด์.
์ฌ๊ธฐ์ ๋งํ๋ ๋ฐ์ ๊ณผ์ ์ ํ ๋ฒ๋์ค ๋ฆฌ๋ถํฐ ์์ํด์ ํ๋ง ๋จธ์ ์ด๋ฐ ๋ฐ์ ๊ณผ์ ์ด ์๋๋ผ html์ ์๋ฒ์์ ๋ณด๋ด๋ ์ผ๋ จ์ ๊ณผ์ ์ ๋งํ๋ค.
์ด์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ ๋ฐ์ ํด์๋ค.
์ต์ด์ ๋ ๋๋ง SSR
์ต์ด์๋ staticํ html ํ์ผ๋ง ์กด์ฌํ๋ค.
์ฌ์ฉ์์ ์ํธ์์ฉ์ ํ ์๋ ์์ ๋ฟ๋๋ฌ ์น์ด๋ ํน์ ๋ถ์ผ์์๋ง ์ฌ์ฉํ๋ ๊ฒ์ด์๊ธฐ ๋๋ฌธ์ ๋์ค์ ์ด๊ฒ ๊พธ๋ฐ ํ์๋ ์์ด ๋ ๊ฐ๋ฒผ์ ์ผ๋ฉฐ ๊ฐ๋จํ๋ค.
๊ทธ๋์ ์ต์ด์๋ ๋งค ์์ฒญ๋ง๋ค static ํ html ํ์ผ์ด ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ๋์์ง๋ง ์ ์ ๋์ ์ธ ํ์ด์ง๋ฅผ ์ํ๊ฒ ๋์๋ค.
๊ทธ๋์ ํ์ํ Server Template Engine
์ฌ์ฉ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๋ Dynamicํ Rendering ์ ์ํ๊ณ php๋ JSP์ ๊ฐ์ Template Engine์ด ํ์ํ๊ฒ ๋์ด html์ ๋ ๋์ ์ด๊ฒ ๋ง๋ค์๋ค.
๊ทธ๋๋ ์ฌ์ ํ ์๋ฒ์์ HTML์ ๋ ๋๋งํ๋ค๋ ๊ฒ์ ๋์ผํ๋ค.
ajax์ ํ์๊ณผ CSR
์์์ ์ฌ์ฉํ ๋์ ์ธ ํ์ด์ง๋ ๋ฌธ์ ๊ฐ ํ๋ ์์๋๋ฐ, ๊ทธ๊ฒ์ ๋ฐ๋ก ์ ์ฒด ๋ฆฌ๋ก๋ฉ์ด์๋ค.
๋ง์ฝ ๋ค์ด๋ฒ ์ธ๊ธฐ ๊ฒ์ ์์๊ฐ ๊ทธ ๋น์์ ์์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๊ทธ๋ผ ์ธ๊ธฐ ๊ฒ์์ด๋ ๋งค๋ฒ ์ ๋ฐ์ดํธ ๋์ด์ผ ํ๋๋ฐ, ๊ทธ๋์ ๊ธฐ์ ๋ ฅ์์๋ ๋งค๋ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๋ง๋ค ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ ๋์๋ค.
๊ทธ๋์ ํ์ํ ๊ฒ์ด ๋ฐ๋ก ajax.
ํ๋ฉด ๊น๋นก์ ์์ด ํน์ ๋ถ๋ถ๋ง ๋ณ๊ฒฝํ ์ ์๋ ๊ธฐ์ ์ด ๋์ค๊ฒ ๋์๊ณ , ๋น๋๊ธฐ ์ปดํฌ๋ํธ๋ค์ด ์ ์ ๋ฑ์ฅํ๊ฒ ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋๋ถํฐ js๊ฐ ๋์ ์ผ๋ก ํ์ด์ง๋ฅผ ์์ฑํด๋ด๋ Client Side Rendering์ด ํ์ํ๊ฒ ๋์๋ค.
๋ค์ ๋์์จ SSR
CSR์ ํธํฉ์ ๋ง์ผ๋ฉฐ ํ์ํ Facebook์ React, Google์ Angular, ๊ฐ์ธ์ Vue์ ๊ฐ์ SPA.
ํ์ง๋ง ์ด๋ฐ CSR ํ๋ ์์ํฌ๋ค์๋ ๋ฌธ์ ๊ฐ ์์๋๋ฐ
- seo
- ์ฑ๋ฅ
๋ฐ๋ก ์ฑ๋ฅ๊ณผ seo ์๋ค.
SEO
SEO๋ ์น ํฌ๋กค๋ฌ๊ฐ ์น ์ฌ์ดํธ๋ฅผ ์ฝ๊ณ ์ธ๋ฑ์ฑํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ ์น ํ์ด์ง๊ฐ ๊ฒ์ ์์ง์ ๋
ธ์ถ๋ ์ ์๊ฒ ํ๋๋ฐ, SPA์์๋ ์ฌ์ฉ์์ ํด๋ฆญ์ ๋ฐ๋ผ ๋์ ์ผ๋ก JS๋ฅผ ์ด์ฉํด ํ์ด์ง๋ฅผ ์์ฑํ๋ฏ๋ก ๊ฒ์ ์์ง ์ต์ ํ๊ฐ ํ๋ค์๋ค.
์ฑ๋ฅ ๋ฌธ์
ํ์ด์ง๋ฅผ ๋ ๋๋งํ๊ธฐ ์ํด์๋ ๋ธ๋ผ์ฐ์ ๊ฐ Js๋ฅผ ์คํํ๊ณ ๊ทธ๋ฅผ ๊ฐ๋นํ ๋งํ cpu ๊ธฐ๊ธฐ๊ฐ ํ์ํ๋ค.
ํ์ง๋ง CPU ์ฑ๋ฅ์ด ์ข์ง ์๊ฑฐ๋ ๋์ฉ๋ js ํ์ผ์ ๋ฐ์ ์ ์๋ ๋คํธ์ํฌ ์ฌ๊ฑด์ด ์ ๊ฐ์ถฐ์ง์ง ์์ ๊ณณ์์๋ SPA๊ฐ ์คํ๋ ค ๋
์ด ๋๊ธฐ ์์ํ๋ค.
๊ทธ๋์ ์ฌ๋๋ค์ ๋ค์ SSR์ ์ฐพ๊ธฐ ์์ํ๋ค.
์ฌ๋๋ค์ ์์ ๋ฐฉ๋ฒ์ ํด๊ฒฐํ๊ณ ์ ๋ค์ SSR์ ์ฐพ๊ธฐ ์์ํ๋๋ฐ, ์ด์ ๋ ์๋ก์ด SSR์ ์ฐพ๊ธฐ ์์ํ์๋ค.
์์์ ์ฌ์ฉํ SSR๊ณผ๋ ๋ค๋ฅด๊ฒ HTML์ ์์ฑํ๊ธฐ ์ํด์ Template Engine์ด๋ JSP ์ฒ๋ผ ์๋ฒ์ธก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ต์ ์ JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ผ๋ฉฐ Next๋ Gatsby์ ๊ฐ์ ๊ฒ๋ค์ ์ฌ์ฉํ๊ธฐ ์์ํ๋ค.
์ด์ ๋ ์๋ฒ์์ ๋ฏธ๋ฆฌ dom์ ๋ ๋๋งํ๊ธฐ ์์ํ๊ณ html๋ง์ return ํด์ค ์๋ฒ๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
๋ฐ์ ๋ SSR SSG
์๋์ SSR์ ๋์ ๊ณผ์ ์ ๋ด๋ณด์.
SSR ๋์ ๊ณผ์
- ์ฌ์ฉ์ ์์ฒญ
- ์๋ฒ๊ฐ ํ์ด์ง์ html ํ์ผ ์์ฑ
- ์๋ฒ๊ฐ html์ ๋ฐํ
- ๋ธ๋ผ์ฐ์ ๋ html์ ๋ ๋๋ง
์ฌ๋๋ค์ ์ด SSR์ ๋ ๋ฐ์ ์ํค๊ธธ ์ํ๊ณ ๋์ฑ ์ข์ ์ฑ๋ฅ์ ๊ธฐ๋ํ๊ฒ ๋์๋ค.
์ฌ๊ธฐ์ ๋ง์ฝ ์๋ฒ๊ฐ ๋งค ์์ฒญ๋ง๋ค ํญ์ ๊ฐ์ ํ์ด์ง๋ฅผ ๋ฆฌํดํด์ค๋ค๋ฉด ๋นํจ์จ์ด์ง ์๋? ์ด๋ ์๊ฐ์ ๊ฐ๊ฒ ๋์๊ณ ์ด๋ฅผ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ผ๋ก SSG๊ฐ ํ์ํ๊ฒ ๋์๋ค.
SSG
SSG๋ ํ์ด์ง๊ฐ ์ฌ์ฉ์์ ์ํธ์์ฉํด์ ๋ฐ์ดํฐ๊ฐ ๋ณํ์ง ์๋ about๊ณผ ๊ฐ์ ํญ์ ๊ฐ์ ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ์๋ฒ์์ ์์ฑํด์ ์์ฒญ์ ๋ฐ๋ผ์ ์ฌ์ฌ์ฉํ๋ ์บ์ฑ์ ํ๊ธฐ ์์ํ๊ณ ์ด๋ฐ ๋ฐฉ๋ฒ์ Next์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
๊ทธ๋ผ ์ธ์ ๋ญ ์จ์ผํด?
๊ทธ๋ผ ์ธ์ ๋ฌด์์ ์ฌ์ฉํ๋๊ฒ ์ข์๊น?
SSR
- ํ์๋ ๋ฐ์ดํฐ๊ฐ ํญ์ ์ต์ ์ ๋ฐ์ดํฐ์ผ ๋
- ์์ฃผ ๋ณ๊ฒฝํ ์ ์๋ ์ฌ์ฉ์๋ณ ํน์ ๋์ ๋ฐ์ดํฐ ์ผ ๋,
SSG
- ์ ์ ์ธ ์ ๋ณด๋ฅผ ํญ์ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง์ผ ๋
- ์ํธ์์ฉ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ง ์์ ๋.
๋๊ธ