๐Next
Nextjs
nextjs๋ React ํ๋ ์์ํฌ
https://nextjs.org/blog/next-13
0.์ฉ์ด ์ค๋ช
0.1.์ปดํ์ผ(compiling)
JSX, TS, JS ๋ฑ์ ๋ชจ๋ -> ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ๋๋ก Javascript๋ก ๋ณํ
0.2.์ถ์(minifying)
์ฝ๋์ ๊ธฐ๋ฅ์ ๊ฑด๋ค์ด์ง ์์ผ๋ฉด์ ์ฃผ์, ๊ณต๋ฐฑ, ๋ค์ฌ์ฐ๊ธฐ, ๋ณ์ ๋ฑ์ ์ค์ฌ ์ฝ๋ ๊ฒฝ๋ํ
๊ฒฝ๋ํ๋ฅผ ํตํ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ํฅ์
0.3.๋ฒ๋ค๋ง(bundling)
์ฌ๋ฌ ๋ด๋ถ ๋ชจ๋๊ณผ ์ธ๋ถ ๋ชจ๋, ํจํค์ง ๋ฑ์ผ๋ก ์ธํด ๋ณต์กํ ์ข ์์ฑ์์ ์ฌ์ฉ์์ ํ์ผ ์์ฒญ์ ์ค์ด๊ณ ์ต์ ํ๋ ๋ฒ๋ค๋ก ๋ณํฉํ์ฌ ์ฌ์ฉ์์๊ฒ ์ ๊ณต
0.4.์ฝ๋๋ถํ (code-splitting)
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฒ๋ค์ ๊ฐ ์ง์ ์ (ํ์ด์ง)์ ํ์ํ ๋ ์์ ์ฒญํฌ ๋จ์๋ก ๋ถํ
๊ฐ๊ฐ์ ํ์ด์ง๋ ํ์ํ ์ต์ํ์ ์ฝ๋๋ง ๋ก๋ํ์ฌ ์ด๊ธฐ ๋ก๋ ์๊ฐ ๋จ์ถ
0.5.์ฌ์ ๋ ๋๋ง(Pre-Rendering)
์ผ๋ฐ์ ์ธ React ์ฑ์ javascript๋ฅผ ๋นํ์ฑํํ๋ฉด ๋ ๋๋ง๋์ง ์์ ์ฑ์ ๋ณผ ์ ์๋ค.
์ฌ์ ๋ ๋๋ง์์ javascript๋ ์ฑ์ ๋ํํ์ผ๋ก ๋ง๋๋๋ฐ ์ฌ์ฉ๋๋ค.
Server-Side Rendering (์๋ฒ์ฌ์ด๋ ๋ ๋๋ง)
๊ฐ ์์ฒญ์ ๋ํด ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ ์ก ์ ์ ์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๊ณ , react ์์๋ฅผ html๋ก ๋ณํํ์ฌ ํ์ด์ง๋ฅผ ์์ฑ.
https://nextjs.org/docs/basic-features/data-fetching/get-server-side-props
Static Site Generation(์ ์ ์ฌ์ดํธ ์์ฑ)
์ ํ๋ฆฌ์ผ์ด์ ๋น๋(๋ฐฐํฌ) ์ ํ ๋ฒ๋ง ์์ฑ
HTML์ CDN์ ์ ์ฅ๋์ด ๊ฐ ์์ฒญ ์ ์ฌ์ฌ์ฉ
https://nextjs.org/docs/basic-features/data-fetching/get-static-props
์๋ฒ์ฌ์ด๋ vs ์ ์ ์์ฑ
์ ์ ์์ฑ: ๋ง์ผํ ํ์ด์ง, ์ค๋ช ์ ๋ฑ๊ณผ ๊ฐ์ด ์ฌ์ฉ์ ์์ฒญ๊ณผ ๊ด๋ จ์์ด ๋ฏธ๋ฆฌ ๋ ๋๋ง์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ
์๋ฒ์ฌ์ด๋: ํ์ด์ง์ ์์ฃผ ์ ๋ฐ์ดํธ๋๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋๊ฑฐ๋, ์ฌ์ฉ์ ์์ฒญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅผ ์ ์๋ ๊ฒฝ์ฐ(ํญ์ ์ต์ )
0.6.ํด๋ผ์ด์ธํธ ๋ ๋๋ง(Client-Side Rendering)
React๋ ์๋ฒ์์ ๋น HTML๊ณผ Javascript๋ฅผ ๋ฐ๊ณ , ํด๋ผ์ด์ธํธ์์ Javascript๋ก ๊ทธ๋ฆฐ๋ค.
1. ์์ํ๊ธฐ
1. app ๋๋ ํ ๋ฆฌ ๋ผ์ฐํ
https://beta.nextjs.org/docs/routing/fundamentals
2. Link
<a>
๋์ ์ ์ฌ์ฉ.ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ํ์์ผ๋ก ๊ธฐ๋ณธ ํ์๋ณด๋ค ๋ ๋น ๋ฆ
3. Image
/public/images
๋๋ ํ ๋ฆฌ์ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์์ ์ฌ์ฉ
4. Metadata
head
๋ฅผ ๋์ฒดํ์ฌ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ
https://beta.nextjs.org/docs/api-reference/metadata
5. Script
์๋ํํฐ ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ฌ์์ ์ฌ์ฉ๊ฐ๋ฅ
strategy
: ์คํฌ๋ฆฝํธ ๋ก๋ ์๊ธฐ ์ง์ onLoad
: ๋ก๋ ์งํ ์คํํ ์คํฌ๋ฆฝํธ ์์ฑ
6. layout-component
์ฌ๋ฌ ํ์ด์ง ๊ฐ์ ๊ณต์ ๋๋ UI
page.js
์ ๊ฐ์ ๊ฒฝ๋ก์layout.js
๋ฅผ ๋ง๋ค๋ฉด ์๋์ผ๋ก ์ ์ฉ
๋ฃจํธ ๋ ์ด์์(ํ์)
/app/layout.js
์์ ์์ฑ<html><body>
๋ฅผ ํฌํจํ์ฌ ์ ์layout.js
๋page.js
์import
ํ์ง ์์๋ ์๋์ผ๋ก ์ ์ฉ๋๋ค.๋ผ์ฐํธ ๊ทธ๋ฃน์ ํตํด ๋ฃจํธ ๋ ์ด์์์ ์ฌ๋ฌ ๊ฐ๋ก ๋ง๋ค ์ ์๋ค
๋ ์ด์์์ ์ค์ฒฉ๋ ์ ์๋ค
7. getStaticProps
(SSG)
getStaticProps
(SSG)์ ์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ(๊ธฐ๋ณธ๊ฐ)
ํจ์ ์ด๋ฆ์ ์ฌ์ฉ์๊ฐ ์์๋ก ์์ฑ
async / await
๊ตฌ๋ฌธ ์ฌ์ฉhttps://beta.nextjs.org/docs/data-fetching/fetching
8. getServerSideProps
(SSR)
getServerSideProps
(SSR)๋์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
{ cache: 'no-store' }
์ต์ ์ ์ฌ์ฉํfetch
9. generateStaticParams(์ ์ ๊ฒฝ๋ก)
์ ํด์ง ๊ฒฝ๋ก๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค๊ธฐ
paths
์ ๋ชฉ๋ก์ ์๋ ๊ฐ๋ง ๊ฒฝ๋ก๋ก ํ์ฌ ์์ฑ
9.1 ์ ์ ๊ฒฝ๋ก + ์ ์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
๊ตฌ ๋ฒ์ :
getStaticPaths
+getStaticProps
app router ๋ฒ์ :
generateStaticParams
+์ฌ์ฉ์์์ํจ์
10. ๋์ ๋ฉํ๋ฐ์ดํฐ
https://nextjs.org/blog/next-13-2
Last updated