์ผ๋จ ์ง๋ ์ฃผ์ฐจ, ๊ทธ๋ฌ๋๊น ์ฆ ํญํด 6์ฃผ์ฐจ๋ ์ฒ์์ผ๋ก ๋ฐฑ์๋ ๋ถ๋ค๊ณผ ํ์ ์ ์งํํ์ฌ ์กฐ๊ทธ๋งํ ๋ฏธ๋ ํ๋ก์ ํธ๋ฅผ ์งํ ํ๊ฒ ๋์๋ค. ๋ค๋ค ์ด์๊ฐ ๋๋จํ์ฌ ๊ฐ๋ฑ ๋ฑ์ ๋ถ์ ์ ์ธ ๋ชจ์ต์ ์ฐพ์๋ณผ ์๊ฐ ์์๊ณ , ์คํ๋ ค ์๋ก๋ฅผ ๋ฐฐ๋ คํ๋ ค๊ณ ๋ง์ด ์ ๊ฒฝ์ฐ๊ฒ ๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฐ๋ฐ ๋ฐฐํฌ๊ณผ์ ์์ ์ฒซ ํ์ ์ด ์ด๊ธ๋๋ ๋ชจ์ต์ ๋ณผ ์๊ฐ ์์๋ค. ๋จผ์ ํ๋ก ํธ์๋ ํ์ ์๋ ๋ฐฐํฌํ๋ ์ฌ์ดํธ๋ค (versel, netlify ๋ฑ)์์ ์ต์ข ๊ฒฐ๊ณผ๋ฌผ์ด ๋ค์ด์๋ ๋ธ๋์น๋ฅผ ๋ฑ๋กํ์ฌ ๋ฐฐํฌ๋ฅผ ํ ๋ค, gitignore.git ํ์ผ๋ก ๊ฑธ๋ฌ์ง๋ API ์ฃผ์๋ฅผ ๋ฐฐํฌ ์ฌ์ดํธ ๋ด์์ ํ๊ฒฝ๋ณ์๋ก ๋ฐ๋ก ์ง์ ํ์ฌ ๋ฐฑ์๋ ํ์์ ์ ์ํ API ์ฃผ์๋ฅผ ํ๋ก ํธ ๋จ์์ ์ฌ์ฉํ axios instance์ ์ ์ ํ๊ฒฝ๋ณ์์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๊ฐ์ด ๋ฃ์ด์ฃผ๋ฉด ์ ์์ ์ผ๋ก ๋ฐฐํฌํ ์ฌ์ดํธ์์ ์ฌ์ฉํ ์ ์๊ฒ๋๋ค.
๊ทธ๋ฐ๋ฐ? ๋ง์ ์ฌ์ฉ์ด ๋์ง ์๋ ๊ฒ์ ๋ณผ ์ ์์๋ค. ์ฒ์์ ํ๊ฒฝ๋ณ์์ ๋ฑ๋ก๋ ์ฃผ์๊ฐ " " ์ ๊ฐ์ธ์ ธ ์์ด์ ๋์ง ์๋ ๊ฒ์ธ๊ฐ? ๋ผ๋ ์๋ฌธ์ผ๋ก ์์๋์ด ์๋ ์์ด ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ๋ฅผ ๋ฐ๋ณตํ์๋ค.
๊ทธ ๊ณผ์ ์์ ๋ฐฑ์๋ ๋จ์์ ๊ฐ๋ฐํ ์๋ฒ๋ http๋ก ๋ฐฐํฌ ๋์ด ์์ผ๋ฉฐ, ํ๋ก ํธ ๋จ์์ ๋ฐฐํฌํ ์ฌ์ดํธ๋ https๋ก ๊ตฌ๋๋๋ ์ฌ์ดํธ์ด๋ผ, ์๋ก๊ฐ์ ์ถ์ฒ๊ฐ ๋ค๋ฅด๋ฏ๋ก API๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์๋ค.
์ฐ๋ฆฌ๊ฐ ๋ฏธ๋ฆฌ ๊ทธ ์ฌ์ค์ ์ธ์งํ๊ณ ๋ ์ ๊ทน์ ์ธ ์ํต์ ํตํด ๋ง์ถ์๋ค๋ฉด, ์ ์๊ฐ ๋ด์ ๋ฐฐํฌํ ์๋น์ค๋ฅผ ์ฌ๋๋ค์๊ฒ ๋ณด์ฌ์ค ์ ์์์ ๊ฒ์ด๋ค.
์ด์ฒ๋ผ ์ฌ๋ฌ๋ชจ๋ก ์์ฌ์ด ์ฃผ์ฐจ์์ง๋ง, Masonry Grid๋ฅผ ๊ตฌํํด ๋ณผ ์ ์์ด์ ๋ด๊ฒ ๋๋ฆ ์๋ฏธ์๋ ์ฃผ์ฐจ์๋ค.
์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ (๋ผ์ด๋ธ๋ฌ๋ฆฌ์ง๋ง, ๊ทธ๋๋ ํ์์ ๊ฑฐ์ ํ๋ ์์ํฌ๋๊น) React์์ ์ด์ฉํ๋ ๋ ๋๋ง ๋ฐฉ์์ CSR์ด๋ค. ์ฌ๊ธฐ์ SSR ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ์ ๋ ํธ๋ฆฌํ๊ฒ ํด์ฃผ๋ React์ ํ๋ ์์ํฌ๋ก ๋ฑ์ฅํ ๊ฒ์ด NextJS
์ด๋ค.
๏ผ ๊ฐ๊ฒฐํ๊ฒ NextJS์ ์ฅ์ ์ ์ ๋ฆฌํด๋ณด์๋ค.
tsconfig.ts
next-end.d.ts
๊ฐ ์์ฑ์ด ๋๋ค.npx create-next-app [ํ๋ก์ ํธ ์ด๋ฆ]
๋ง์ฝ ํ์ ์ผ๋ก ์ค์นํ๋ ค๋ฉด
npx create-next-app --typescript
์ด์ ์ react์์ ํ ๊ฒ ์ฒ๋ผ ๋ผ์ฐํ ํ๋ฉด ๋์ง๋ง next์ ๊ท์น์ ๋ฐ๋ผ์ผ ํ๋ค.
๋ณด๋๊น next๋ ํด๋ ๊ตฌ์ฑ์์ ํ์ด์ง ์ปดํฌ๋ํธ๋ฅผ ์ค์ ํ๊ฒ ๋ ๊ฒฝ๋ก๋๋ก ๋ผ์ฐํ
์ด ๋๋ ๋ฏ ํ๋ค.
์๋ฅผ ๋ค์ด pages/shop/Brand.js๋ผ๊ณ ํด๋ ๊ตฌ์ฑ์ด ๋์๋ค๋ฉด, pages๋ผ๋ ํ์ด์ง๋ฅผ ๋ชจ์๋๋ ํด๋๋ก ๋ถํฐ ๋ผ์ฐํฐ ์ฃผ์๋ shop/Brand๊ฐ ๋๋ค.
// [brands].jsx
import {useRouter} from "next/router"
export default function brands() {
const router = useRouter();
const {brands} = router.query;
return (
<div>
<h1>shop/{brands}</h1>
</div>
)
}
-> ๋ค์ด๋๋ฏน ํด๋๋ฅผ ์ด์ฉํ์ฌ ํ์์ ๋ค์ด๋๋ฏน ๋ผ์ฐํฐ ๊ฒฝ๋ก๊ฐ ๋ค์ด์ค๋๋ผ๋ ์ฌ์ฉํ ์ ์๊ฒ
๋์ ๋ผ์ฐํฐ์ ์ ์ ๋ผ์ฐํฐ๊ฐ ๊ฐ์ด ์์ผ๋ฉด ์ ์ ๋ผ์ฐํฐ๊ฐ ์ฐ์ ์ผ๋ก