โ๏ธ Next.js๋ ๋ฌด์์ธ๊ฐ?
vercel์์ ๋ง๋ ๋ฆฌ์กํธ์ ํ๋ ์์ํฌ!!
ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๊ธฐ์ ๊ณผ ์๋ฒ ์ฌ์ด๋ ๊ธฐ์ ์ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ ์ฌ์ธ์ ์๋ฃจ์ ์ ๋๋ค!
api๋ฅผ ๊ตฌํํด์ ํ๋ก ํธ์๋์ธ ๋ฆฌ์กํธ์ ํ์ด๋ธ๋ฆฌ๋ํ๋ฉด ๊ฐ๋จํ๊ฒ ์๋ฒ ๊ธฐ๋ฅ๊ณผ ํ๋ก ํธ์๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
** ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๊ณตํต์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ ํน์ ํ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ํํ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ํด๋๋ช , ํ์ผ๋ช ๋ฑ์ ๋ํ ๊ท์น์ด ์๊ณ ํ๋ ์์ํฌ์ ๋นํด ์์ ๋กญ์ต๋๋ค.
ex) ๋ฌด์ธ๊ฐ๋ฅผ ์๋ฅผ ๋ '๋๊ตฌ'์ธ '๊ฐ์'๋ฅผ ์ฌ์ฉํด์ '๋ด๊ฐ' ์ง์ ์ปจํธ๋กคํ์ฌ ์๋ฅธ๋ค.
** ํ๋ ์์ํฌ
๊ณตํต์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ ํน์ ํ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ํํ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ํด๋๋ช , ํ์ผ๋ช ๋ฑ์ ๋ํ ๊ท์น์ด ์๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋นํด ์ข ๋ ์๊ฒฉํฉ๋๋ค.
ex) ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ด๋ํ ๋ '๋๊ตฌ'์ธ ๋นํ๊ธฐ๋ฅผ ํ๊ณ ์ด๋ํ์ง๋ง '๋นํ๊ธฐ'๊ฐ ์ปจํธ๋กคํ๊ณ ๋๋ ๊ฐ๋งํ ์์ ์์ด์ผํ๋ค.
โ๏ธ React๋ฅผ ์ ์ฐ๋ค๊ฐ ์ Next.js๋ฅผ ๋ง๋ ๊ฑฐ์ง?
SEO(Search Engine Optimization)๋ฅผ ์ํ Server-Side Rendering(SSR)์ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํด์!
React๋ Client Side Rendering(CSR)์ ํฉ๋๋ค. ์น์ฌ์ดํธ๋ฅผ ์์ฒญํ์ ๋ ๋น html์ ๊ฐ์ ธ์ script๋ฅผ ๋ก๋ฉํ๊ธฐ ๋๋ฌธ์, ์ฒซ ๋ก๋ฉ ์๊ฐ๋ ์ค๋๊ฑธ๋ฆฌ๊ณ Search Engine Optimization(SEO)์ ์ทจ์ฝํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ๊ทธ๋์ ๋์๋ณด๋๋ ๋ก๊ทธ์ธ์ ํด์ผ ์ธ ์ ์๋ privateํ ์ฌ์ดํธ์ ์ ํฉํฉ๋๋ค.
์ด์ ๋นํด Next.js๋ pre-reloading์ ํตํด ๋ฏธ๋ฆฌ ๋ฐ์ดํฐ๊ฐ ๋ ๋๋ง๋ ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ฌ์ ์๊ฒ ํด์ฃผ๋ฏ๋ก ์ฌ์ฉ์์๊ฒ ๋ ์ข์ ๊ฒฝํ์ ์ฃผ๊ณ , ๊ฒ์ ์์ง์ ์ ๋ ธ์ถ ๋ ์ ์๋๋ก ํด์ฃผ๋ SEO์์๋ ์ฅ์ ์ ์ป์ ์ ์์ต๋๋ค.
** Search Engine Optimization/๊ฒ์์์ง์ต์ ํ(์ดํ “SEO”๋ผ ํ๋ค)
๊ตฌ๊ธ๊ณผ ๋ค์ด๋ฒ์ ๊ฐ์ ๊ฒ์์์ง์ ๋ฌธ๋ฒ์ ๋ง๊ฒ ์น ์ฌ์ดํธ ํน์ ์ฝํ ์ธ ๋ฅผ ์ต์ ํํ์ฌ ๊ฒ์ ๊ฒฐ๊ณผ ์์์ ๋ ธ์ถ์ํค๋ ์์ ์ ์ผ๋ จ์ ๋ ธ๋ ฅ๊ณผ ๊ณผ์
โ๏ธ ssr์ csr์ ๋ํด ๋ ์์๋ณด์!
SSR | CSR |
์๋ฒ์์ html ๊ทธ๋ ค์ค | ํด๋ผ์ด์ธํธ์์ html ๊ทธ๋ ค์ค |
html ๋ ๋๋ง๋ถํฐ ํ ๋ค์์ js๋ฅผ ๋ค์ด์ ๋ฐ๋๋ค. (js ๋ค์ด๋ฐ๊ธฐ ์ ์ html ๋ฅผ ๋ค์ด ๋ฐ์์ ํ๋ฉด์ ๋ณผ ์ ์๋ค. ๊ทธ๋์ ๊ฒ์์์ง ํด๋กค๋ง์ด ๊ฐ๋ฅ) | js๋ค์ด ๋ฐ๊ณ react๋ฅผ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๊ฒ์์์ง ๋ด์ ํด๋กค๋ง์ด ์๋๋ค. |
โ๏ธ Next.js๋ฅผ ์ฌ์ฉํ๋๋ฐ ์์ด์ React์ ๋ง์ ์ฐจ์ด๊ฐ ์๋?
NO!!
์๋ ๊ณต์๋ฌธ์์์ ๋งํ๋ ๊ฒ์ฒ๋ผ React๋ฅผ ์ฌ์ฉํ์ฌ UI๋ฅผ ๊ตฌ์ถํ ๋ค์ Next.js๋ก ๋ผ์ฐํ , ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ, integration๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์๊ตฌ ์ฌํญ์ ํด๊ฒฐํ๋ ๋์์ ๊ฐ๋ฐ์ ๋ฐ ์ต์ข ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ ์ ์์ต๋๋ค!
You can use React to build your UI, then incrementally adopt Next.js features to solve common application requirements such as routing, data fetching, integrations - all while improving the developer and end-user experience.
https://nextjs.org/learn/foundations/about-nextjs
โ๏ธ ๋ด๊ฐ ์ฌ์ฉํ๋ฉด์ ๋๋ Next.js์ ์ฅ์ ์?
์์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด์ Next.js๋ฅผ ์ฌ์ฉํด์ ์์ง ๋ชจ๋ฅด๋ ๊ฒ์ด ๋ง์ง๋ง ์ฌ์ฉํ๋ฉด์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ์๋์ ๊ฐ์ต๋๋ค!
1๏ธโฃ pages ํด๋ ์์ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋ฉด ์๋์ผ๋ก ๊ฒฝ๋ก๊ฐ ์ค์ ๋๋ค!
1. page ํด๋์ ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ
2. ์๋์ฒ๋ผ href='' ์์ ํ์ด์ง ๋ช ์ ์ฐ๋ฉด ๋!!
2๏ธโฃ Next/Image๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ฏธ์ง ์ต์ ํ๊ฐ ์ฝ๋ค!
1. lazyloading
-> ์ฆ ํ๋ฉด์ ํ์ํ ์ด๋ฏธ์ง๋ง ๋จผ์ ๋ถ๋ฌ์ค๊ณ ๊ทธ ์ธ์ ์ด๋ฏธ์ง๋ค์ ๋ก๋ฉ์ ์ง์ฐ์ํค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
2. ์ด๋ฏธ์ง ํ์ผ ํฌ๋งท ์ต์ ํ
-> jpg, pngํ์ผ์ webpํ์์ผ๋ก ๋ณํํด ์ฉ๋์ ์ค์ฌ์ค๋๋ค.
* webp๋ ๊ตฌ๊ธ์์ ๋ง๋ ์ต์ ํ๋ ์ด๋ฏธ์ง ํ์ผ ํฌ๋งท ์ ๋๋ค.
3๏ธโฃ ํ์ด์ง๊ฐ ๋น ๋ฅด๊ณ ๋งค๋๋ฌ์ด ์ ํ์ด ๊ฐ๋ฅํ๋ค!
React์์๋ React Router๋ฅผ ์ฌ์ฉํด์ ํ๋๋ฐ Next.js๋ React Router๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ ํ์ ์์ด < Link /> ์ปดํฌ๋ํธ๋ฅผ ํตํด ํ์ด์ง๊ฐ์ ๋น ๋ฅด๊ณ ๋งค๋๋ฌ์ด ์ด๋์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๊ทธ๋์ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค.
HTML์ a ํ๊ทธ์ ๋ฌ๋ฆฌ ํ์ด์ง๋ฅผ ๋ฆฌ๋ก๋ฉํ์ง ์๊ณ ๋ ํ์ด์ง๊ฐ ์ด๋์ด ๊ฐ๋ฅํ๊ณ , link ์ปดํฌ๋ํธ๊ฐ ๋ทฐํฌํธ์ ๋ณด์์ ๋ ๊ด๋ จ ํ์ด์ง๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฏธ๋ฆฌ ๊ฐ์ ธ๋ค ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ๋งํฌ๋ฅผ ํด๋ฆญํ์ ๋ ๋งค์ฐ ๋น ๋ฅด๊ฒ ํด๋น ํ์ด์ง๋ก ์ด๋ํ ์ ์๊ฒ ํด์ค๋๋ค.
โ๏ธ ๊ฐ๋ฐํ๊ฒฝ ์ธํ ์ ์ด๋ป๊ฒ ํ ๊น?
npx create-next-app@latest
์ดํ javascript๋ฅผ ์ฌ์ฉํ ์ง, typescript๋ฅผ ์ฌ์ฉํ์ง ์ ํํ๋ฉด ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
'๐ฅFrontEnd > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
.env ํ๊ฒฝ ๋ณ์ ํ์ผ (0) | 2023.03.10 |
---|---|
ํญ ํ์์ ๋ก๊ทธ์ธ, ํ์๊ฐ์ ํผ ๋ง๋ค๊ธฐ (0) | 2023.01.04 |
axios.get์ fetch ์ฐจ์ด (0) | 2022.09.05 |
TIL) ๋ฆฌ์กํธ์์ <a> ํ๊ทธ? Link ์ปดํฌ๋ํธ? (0) | 2022.09.02 |
๋ฆฌ์กํธ ์ธ์ฆ ๊ณต๋ถํ๊ธฐ, ๋ก๊ทธ์ธ ๋ก๊ทธ์์ ์ฝ๋ (0) | 2022.08.01 |