์ด ๊ธ์ udemy์ Next.js & React - ์๋ฒฝ ์ ๋ณต ๊ฐ์ด๋ (incl. Two Paths) ๊ฐ์ข๋ฅผ ๋ฐํ์ผ๋ก ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
1. Welcome to the Coursel
์์ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ๊พธ์คํ ํ์ดํ ๐ค๐ค
2. Next.js๋ ๋ฌด์์ธ๊ฐ? Next.js๋ฅผ ์ ์ฌ์ฉํ๋ ๊ฑธ๊น?
NextJS๋ ํ๋ก๋์ ์ฉ React ํ๋ ์ ์ํฌ ์ ๋๋ค. ํฐ ๊ท๋ชจ์ ํ๋ก๋์ ์ฉ React ์ฑ์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ํด์ฃผ๋ ๋ง์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ReactJS๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ์ ์ํ JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ฆ Third Party ํจํค์ง๋ก ํ๋ก ํธ ์๋ ํ๋ก์ ํธ์ ์ถ๊ฐ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋ค. ๊ฒฐ๊ตญ ํด๋ผ์ด์ธํธ ์ธก JavaScript ์ฝ๋๋ผ๋ ์ด์ผ๊ธฐ ์ ๋๋ค. ์ฃผ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ถ๋ถ์ธ ์ปดํฌ๋ํธ, ์ํ, ํ๋กํผํฐ ๋ฑ์๋ง ์ด์ ์ ๋ง์ถ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ถ๋ฅ๋ฉ๋๋ค. ๋๋ฌธ์ ๋ผ์ฐํ ํน์ ์ธ์ฆ ๋ฑ์ด ํ์ํ ๊ฒฝ์ฐ ์ด๋ฅผ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํ๋ง๋๋ก Next.js์ ์ญํ ์ React ๊ฐ๋ฐ์์ธ ์ฌ๋ฌ๋ถ์ ์ ๋ฌด๋ฅผ ์์ํ๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์ ๋๋ค.
3. ํต์ฌ ๊ธฐ๋ฅ : Server-side Page (Pre-) Rendering
์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)์ด๋, ํด๋ผ์ด์ธํธ ์ธก์ด ์๋ ์๋ฒ ์ธก์ ํ์ด์ง ์์ ๋ ๋๋ง ๋๋ ์ฝํ ์ธ ์ฒ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค. React๋ง์ ์ด์ฉํด ๊ตฌ์ถ๋ ์ผ๋ฐ์ ์ธ React App ์์ ๋ก๋ฉ๋ React ํ์ด์ง์ ์์ค ์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด ํ์ด์ง๊ฐ ์์๋๋ ๋ถ๋ถ๋ถํฐ ๋น์ด์์ต๋๋ค.
React๋ ํด๋ผ์ด์ธํธ ์ธก JavaScript ๋ผ์ด๋ธ๋ฌ์ด๊ธฐ ๋๋ฌธ์ ๋ ๋๋ง์ ์ ๋ถ ํด๋ผ์ด์ธํธ ์ธก์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ์ ๋, ์๋ฒ์์ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ์ ์ก๋๋ HTML ์ฝ๋์๋ ๋ณ ๋ด์ฉ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ์ ์ฝ์๊ณผ ๊ฐ์ด ๋ณด์ฌ์ ธ์ผ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก๋ถํฐ fetchํ๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๊ฐ fetch ๋๋ ๋์ ์ฆ ์์ฒญ์ด ์ ์ก๋ ๋ ์ ๊น ๋์ ํ์ด์ง๊ฐ ๊น๋นก๊ฑฐ๋ฆฌ๋ ๋ก๋ฉ ์ํ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ํด๋ผ์ด์ธํธ ์ธก์์ JavaScript ์ฝ๋๊ฐ ์คํ๋ ๋ค์ ๋ฐ์ดํฐ fecth๊ฐ ์์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฌ์ฉ์ ๊ฒฝํ์ ๊ด์ ์์๋ ์ด๋ฌํ ๋ก๋ฉ์ด ์ด์์ ์ด์ง ์์ ์ ์์ต๋๋ค.
๋ฐ๋ฉด ๋ก๊ทธ์ธ์ ํด์ผ์ง๋ง ์ ๊ทผํ ์ ์๋ ๊ด๋ฆฌ ๋์๋ณด๋์ ๊ฒฝ์ฐ์๋ ๊ฒ์ ์์ง ์ต์ ํ(SEO)๊ฐ ์ค์ํ์ง ์์ต๋๋ค. ํ์ง๋ง ๊ฒ์ ์์ง์ ํตํด ๊ฒ์์ด ๋์ด์ผ ํ๊ณ ๋ง์ ์ฝํ ์ธ ๋ฅผ ํฌํจํ๊ณ ์๋ ๊ณต๊ฐ ํ์ด์ง๊ฐ ์์ ๊ฒฝ์ฐ SEO๊ฐ ์ค์ํด์ง๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ๋ค์์๋ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)์ด ๋์์ด ๋ฉ๋๋ค.
ReactJS์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)์ ์ถ๊ฐํ๋๋ก ํด์ฃผ๋ ๋ด์ฅ ๊ธฐ๋ฅ์ด ์๊ธด ํ๋, ์ ๋๋ก ์ถ๊ฐํ๊ธฐ ์ด๋ ค์ธ ์ ์๊ณ ์ง์ ๊ฑฐ์ฒ์ผ ํ๋ ๋จ๊ณ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ฉด NextJs์๋ ๋ด์ฅ ์๋ฒ ์ธก ๋ ๋๋ง์ด ์์ผ๋ฏ๋ก ์๋์ผ๋ก ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋ง ํ๊ธฐ ๋๋ฌธ์ ํจ์ฌ ์ฝ๊ฒ ์์ ํ ์ ์์ต๋๋ค. ๋จ์ํ Html ๋ผ๋๋ง ์๋ ๊ฒ ์๋๋ผ ์๋ฒ์์ ๋ฐ์ ๋ชจ๋ ์ฝํ ์ธ ๊ฐ ์ด๋ฏธ HTML ํ์ด์ง์ ํฌํจ๋์ด ์์ต๋๋ค.
4. ํต์ฌ ๊ธฐ๋ฅ : File-based Routing
NextJs ์๋ ์ฝ๋ ๋ด ๋ผ์ฐํธ ์ ์ ์์ด, ํ์ผ๊ณผ ํด๋์ ํ์ด์ง์ ๋ผ์ฐํธ๋ฅผ ์ ์ํฉ๋๋ค. React์ ๋ฌ๋ฆฌ ์ถ๊ฐ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ์ง ์์๋ ๋ฉ๋๋ค.
5. ํต์ฌ ๊ธฐ๋ฅ : Key Feature: Build Fullstack React Apps!
NextJS๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ค์ด React ํ๋ก์ ํธ์ ๋ฐฑ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ์์ ์ ์์ํ๊ฒ ํ ์ ์์ต๋๋ค. ๋ํ Server-side Rendering ์ ํตํ ํด๋ผ์ด์ธํธ ์ธก ์ฝ๋ ๋ฟ๋ง ์๋๋ผ NojdeJS ์ฝ๋๋ฅผ ํตํด ์ฝ๊ฒ ๋ฐฑ์๋ API๋ฅผ React ํ๋ก์ ํธ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค.
6. Join Our Learning Community!
7. Creating a NextJS Project
npx create-next-app@latest
# or
yarn create next-app
# or
pnpm create next-app
Node.js์๋ Node Package Manager๊ฐ ํฌํจ๋์ด ์๋๋ฐ, ์ด๋ JavaScript ํ๋ก์ ํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ค์ง์ ์ธ ํ์ค ๋๊ตฌ์ ๋๋ค. Next ํ๋ก์ ํธ ์์ฑ์ ์ํด ์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด SSR์ ๊ฒฝ์ฐ Node.js๋ฅผ ๋ด๋ถ์์ ์ฌ์ฉํฉ๋๋ค. ์ด ๋๋ฌธ์ Node.js๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
prettier extension ์ค์น ํ ์๋ ์ค์ ๊น์ง ์ถ๊ฐํด์ค๋๋ค.
8. ์์ฑ๋ Project ๋ถ์ํ๊ธฐ
- pages : create-react-app์ผ๋ก ์์ฑํ ์ผ๋ฐ์ ์ธ ํ์ค React ์ฑ ๋ด์๋ public ํด๋์ index.html ํ์ผ์ด ์๋ ๋ฐ๋ฉด, NextJS ์ฑ ๋ด์๋ ํ์ผ์ด ์์ต๋๋ค. ์ด๋ ์ด๋ฏธ NextJS๊ฐ ๋ด์ฅ๋ ์ฌ์ ๋ ๋๋ง์ด ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์ฒญ์ด ์๋ฒ๋ก ๋๋ฌํ ๋์ ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์ ๋จ์ผ ํ์ด์ง๊ฐ ๋์ ์ผ๋ก ์ฌ์ ๋ ๋๋ง์ด ๋์ด ์ฝํ ์ธ ๋ฅผ ํฌํจํ ์ด๊ธฐ ํ์ด์ง๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐ๋ผ์ pages ํด๋๊ฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ด ํด๋์ ํ์ผ ๊ธฐ๋ฐ์ ๋ผ์ฐํ ์ ์ค์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- public
- styles
9. ์ฒซ๋ฒ์งธ ๋ฐ๋ชจ : NextJS ์ง์ ์ฌ์ฉํด๋ณด๊ธฐ
npm run dev
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
npm run dev ๋ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์คํ์ํต๋๋ค. ๊ฐ๋ฐ ์๋ฒ๋ NextJs ํ์ด์ง ๋ฐ ์ฑ์ ์ ๋ฐ์ ๋ด๋นํ๋ ๋ด์ฅ ์๋ฒ๋ก ์ฝ๋๋ฅผ ํ์ธํด ํ์ผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฅ๋ ๋๋ง๋ค ๋ธ๋ผ์ฐ์ ์ ๋ํ๋๋ ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจ ํ๊ณ ์ ๋ฐ์ดํธ ํด์ ์ต๊ณ ์ ๊ฐ๋ฐ ๊ฒฝํ์ ์ ๊ณตํด์ค๋๋ค. ์ดํ ์ฑ์ ๋ฐฐํฌ ์ค๋น๊ฐ ๋๋ฉด deploy์ ์ต์ ํ๋ ์ถ๋ ฅ๊ฐ์ ์ํด npm run build๋ฅผ ์คํํด์ ํ๋ก๋์ ์ฉ์ผ๋ก ๊ตฌ์ถํฉ๋๋ค. ์ดํ ์ต์ ํ๋ ์๋ฒ๋ฅผ ์์ํ๊ธฐ ์ํด npm start๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์คํํ ํ, View Page Sorce๋ฅผ ํด๋ฆญํด ํ์ธํด๋ณด๋ฉด HTML ๋งํฌ์ ๋ด์ ํ๋ฉด์ ๋ํ๋ ํ ์คํธ ๋ฑ์ ๋ชจ๋ ๋ด์ฉ์ด ํฌํจ๋์ด ์์ต๋๋ค. ํ์ด์ง๊ฐ ์ฌ์ ๋ ๋๋ง์ด ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ๋ด์ฅ ํ์ด์ง ์ฌ์ ๋ ๋๋ง ๊ธฐ๋ฅ์ด ํ์ค React App์ ์๋ NextJs๊ฐ ์ ๊ณตํ๋ ํต์ฌ ๊ธฐ๋ฅ ์ค ํ๋์ ๋๋ค.
โPre-rendering ์ด๋?
Next.js์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํ์ด์ง๋ฅผ ํ๋ฆฌ ๋ ๋๋ง ํฉ๋๋ค. HTML์ด ํด๋ผ์ด์ธํธ ์ฌ์ด๋์์ JS๋ฅผ ํตํด ์์ฑ๋๋ ๊ฒ ์๋๋ผ Next.js๊ฐ ์ฌ์ ์ ๊ฐ ํ์ด์ง๋ฅผ ๋ง๋ค์ด ๋์ต๋๋ค. ์ด๋ ๊ฐ HTML์ ํด๋น ํ์ด์ง์ ์ต์ํ์ผ๋ก ํ์ํ JS ์ฝ๋์ ๊ฒฐํฉ๋์ด ์์ต๋๋ค. ํ์ด์ง๊ทธใ ๋ธ๋ผ์ฐ์ ์ ์ํด ๋ก๋๋ ๋๋ hydration์ด๋ผ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์น๊ฒ ๋ฉ๋๋ค. hydration์ JS ์ฝ๋๊ฐ ์คํ๋์ด ํด๋น ํ์ด์ง๋ฅผ ์์ ํ ์ธํฐ๋ ํฐ๋ธํ๊ฒ ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ํ๋ฆฌ ๋ ๋๋ง์ ํ ๊ฒฝ์ฐ, ํ๋ฆฌ ๋ ๋๋ง์ ํ์ง ์์ ๋๋ณด๋ค ๋ ๋์ ์ฑ๋ฅ๊ณผ SEO๋ฅผ ๊ฐ์ถ ์ ์์ต๋๋ค.
10. About This Course & Course Outline
- Basics & Foundation
- File-based Routing
- Page Pre-Rendering & Data Fetching
- Combining "Standard React" & NextJS
- API Routes & Fullstack Capabilities
- Advanced Concepts
- Optimization Opportunities
- Looking Behind the Scenes & Theory
- Deployment & Configuration
- Authentication
- Summaries & Refreshers