shadcn ui ์์ ์ ๊ณตํ๋ Drawer DrawerA drawer component for React.ui.shadcn.com shadcn ui ์์ ์ ๊ณตํ๋ Drawer ์ ๋ฐฉํฅ์ ์๋์์ ์๋ก ์ฌ๋ผ์จ๋ค. ํ์
ํํ๋ก ๋์ฐ๋ ๊ฒ๋ ์์๋ก ๋ณด์ฌ์ฃผ๊ธฐ๋ ํ์ง๋ง ๋๋ ์ปค์คํ
ํด์ ์ค๋ฅธ์ชฝ์ ์ค๋ฌด์ค~ ํ๊ฒ ๋์ค๊ฒ ๊ตฌํํด์ผํ๋ ์ํฉ์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ ์ํฉ์์๋ ์ค๋ฅธ์ชฝ์์ ๋์ค๋๊ฑฐ์ง๋ง ๋์์ธ์ด ๋ฐ๋๋ฉด ๋ ์ด๋ป๊ฒ ๋ ์ง ๋ชจ๋ฅด๋ ์ํฉ์ด๊ธฐ ๋๋ฌธ์ direction์ ๋ณ์๋ก ๋ฃ์ด์๋ณ๊ฒฝํ ์ ์๋ ๋ฐฉํฅ์ ์ฐพ์๋ค. shadcn/ui๋ ๋ฒ๋ค๋์ง ์์ ์ปดํฌ๋ํธ ์์ค ์ฝ๋๋ฅผ ํ๋ก์ ํธ์ ์์กด์ฑ์ผ๋ก ์ถ๊ฐํ์ง ์๊ณ , ๋ง ๊ทธ๋๋ก ๋ณต๋ถํด์ ์ปดํฌ๋ํธ ์ฝ๋๋ฅผ ์จ์ ํ ์ฌ์ฉํ ์ ์๋ค. ์ด ํฌ์ธํธ๊ฐ ์ค์ํ๋ค. ๋ํ๋์์ ๋ค์ด๊ฐ๋๊ฒ ์๋..
๊ฐ๋ฐ/Next.js
๋ฐ์ํ ์น์ฌ์ดํธ ์ ์์ ์ด์ ๊ทธ๋ฅ ํ์์ด๋ค. ๋ฏธ๋์ด์ฟผ๋ฆฌ ์์
์ ํ ๋ ํญ์ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ฅผ ์ก๋ ๊ฒ์ด ์ ๋งคํ๋ค๋ผ๊ณ ์๊ฐํ๋๋ฐ์ฐ์ ์ 768px ์ต์๋ก ํ์ ๊ฒฝ์ฐ๋ฅผ ๋๊ณ ์์
์ ๋ค์ด๊ฐ๋ค. shadcn/ui ์ด๋?Radix UI ๋ฐ Tailwind CSS๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ. ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ์ฑ์ copy and paste ํ์ฌ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ์์ ๋ชจ์์ด๋ค. npm install ์ ํ์ฌ ์ข
์์ฑ ์ค์น๋ฅผ ํ์ง ์๋๋ค๋ ์ด์ผ๊ธฐ๋ค. tailwind css๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์๋ค. ์ปค์คํ
์ ํ ๋ tailwind css ๋ฒ์น์ ๋ฐ๋ฅด๋ฉด ๋๋ค. ์ฌ์ฉํ๊ธฐ ์ํด์๋ Nextjs , tailwind css ๊ฐ ์ค์น๋์ด์์ด์ผํ๋ค. ๋ค ๊ฐ์คํ๊ณ shadcn/ui๋ฅผ ์ฐ๋ฉด์ ๋ฏธ๋์ด์ฟผ๋ฆฌ ์์
์ ..
๊ฐ์ธ์ ์ธ ํ์๋ก ์ธํด์ ๋ง๋ค๊ธฐ ์์ํ๋ ํ์ ํธ๋ํน ์น. ๋
์ํ๋ ์๊ฐ์ ๋ง๋ค์ด๋ณด๊ณ ์ธก์ ํด๋ณด๊ฒ ๋ค๊ณ ์์ํ ๊ฒ์ด์๋๋ฐ ์ง๋ ๋ฌ ๊ธฐ๋ก๊ณผ ํ์ฌ์ ๊ธฐ๋ก ๋น๊ต / ๋๋ ๋ชฉํ ์๊ฐ์ ์ ํด๋๊ณ ํ์ฌ ์ผ๋ง๋ ์ด๋ค๋์ง ์ฒดํฌํ๋ ๋ถ๋ถ๊น์ง ๋ ํด๋ณด๊ณ ์ถ์ด์ก๋ค. ๊ทธ ํํ์ progressbar๋ก ํ๋ฉด ์ง๊ด์ ์ผ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๊ณ , nextui๋ฅผ ์ฌ์ฉํด์ ๊ฐ๋จํ๊ฒ ์ ์ฉํด๋ณด๊ธฐ๋ก ํ๋ค. ๐๐ป NextUI ๊ณต์๋ฌธ์ https://nextui.org/ NextUI - Beautiful, fast and modern React UI LibraryBeautiful, fast and modern React UI Librarynextui.org nextui๋ฅผ ์ ์ฉํ๊ธฐ ์ํด์๋ ๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ฉด ๊ต์ฅํ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ ์ ์๋ค. ๊ต์ฅํ ..
ํ๋ก์ ํธ ๊ตฌํ์ ์งํํ๋ฉด์ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ง๋ค์๋ค. ์๋ฒ์ ์ ์ฅ๋์ด์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ ์ด๋ฏธ ๋ง๋ค์ด์ ธ์๋ ๋ฐ์ดํฐ ํธ์ถ ์ฝ๋๋ค์ ๊ทธ๋๋ก ์ฌํ์ฉํด์ ์งํ์ ํ๋๋ฐ ๊ฐ๋ฐ๋ชจ๋์์๋ ๊ด์ฐฎ์์ง๋ง ๋น๋๋ง ํ๋ฉด ๊ณ์ํด์ ์ค๋ฅ๊ฐ ๋ฌ๋ค. ์ ํํ๋ ์ ์ ๋ ๋๋งํ๋ ํ์ด์ง์์ ๊ณ์ ์ค๋ฅ๊ฐ ๋๋ ์ํฉ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋ ํธ์ถํ๊ฒ ์๋ฒAPI๋ฅผ ๋ฐ๋ก ๋ง๋ ๊ฒ ์๋๋ผ nextjs๊ฐ ์ง์ํ๋ api route๋ฅผ ์ด์ฉํด์ severless ํ ํจ์๋ก ๊ตฌํํ๋ค. ์ฐธ๊ณ ๋ก API ๋ผ์ฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด Next.js ์ดํ๋ฆฌ์ผ์ด์
์์ ์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ ์ ์๋ค. ์ด ๋ถ๋ถ์ ์ดํดํ๊ธฐ ์ํด์๋ nextjs์ ์๋ฒ ๋ ๋๋ง์ ๋ํด์ ์ ํ์๊ฐ ์๋ค. nextjs ์๋ฒ ๋ ๋๋ง์๋ ์ด 3๊ฐ์ง๊ฐ ์๋๋ฐ, ์ฒซ๋ฒ์งธ Stat..
์ต๊ทผ nextjs๋ก ๊ตฌํํ ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ ๋ฐฉ๋ฒ์ ์ฐพ๋ค๊ฐ vercel๋ก ํธ์คํ
์๋น์ค๋ฅผ ํด์ฃผ๊ธฐ์ ํ ๋ฒ ์จ๋ด์ผ๊ฒ ๋ค๋ฉฐ~~ ๋์ ํ์ต๋๋ค. vercel ํํ์ด์ง์์ ๋ก๊ทธ์ธํ๊ธฐ https://vercel.com/ Dashboard – Vercel vercel.com start deploying ๋ฒํผ์ด ๋ณด์ด์์ฃ ? ํด๋ฆญํด๋ฆญ - ์ด๋ ๊ฒ git repository๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ฒ ํ๋ ๋ถ๋ถ์ด ์์ต๋๋ค. ์ ๋ ๋ค ๊ฐ์ ธ์ค์ง๋ ์๊ณ , ๋ฐฐํฌํ ๋ ํฌ์งํ ๋ฆฌ๋ง ๊ฐ์ ธ์์ต๋๋ค. ๋ฐฐํฌ์์
์ ํ ํ๋ก์ ํธ์์ธ๋ก ๋ค์ด๊ฐ์ ์๋์ ๋ด์ฉ์ ์ ์ด์ฃผ์๋ฉด ๋๋๋ฐ, ๋ฐ๋ก ํ๋ก์ ํธ package.json์์ ์ค์ ํ ๋ถ๋ถ์ด ์์ผ์๋ค๋ฉด ํฌ๊ฒ ์์ ํ ๋ถ๋ถ์ ์์ผ์ค๊ฑฐ์์. root directory๊ฐ์๊ฑฐ ์ ์ฒดํฌํด์ฃผ์ธ์ ์ ๋ ์ฒ์์๋ ์๋์ ์บก์ณ์ฒ๋ผ ๋ค ์ฑ..
nextjs12 ๋ฅผ ์ฐ๋ค๊ฐ nextjs14๋ก ๊ธ ์ ํ๋ฅผ ํ๋ค๋ณด๋ ์๋ก์ด ๊ฒ๋ค์ด ๊ฝค ๋์ ๋ค์ด์๋ค. ํด๋น ๋ด์ฉ์ nextjs13 ์ดํ์๋ ์ ์ฉ์ด ๋๋ ๋ด์ฉ์ด๋ค. ํ์ด์ง๋ฅผ ๋ฆฌ๋ก๋ํ๋ ค๊ณ ํ๋๋ฐ, reload() ํจ์๊ฐ ์์ด์ง๊ฒ ์๋๊ฒ ๋๊ฐ! ๊ทธ๋์ ๊ณต์๋ฌธ์๋ฅผ ์ฐพ์๋ค์ด๊ฐ๋ค. ๊ณต์๋ฌธ์ ์๋ณธ์ ์ข ๊ฐ์ ธ์๋ดค๋ค. useRouter() router.push(href: string, { scroll: boolean }): Perform a client-side navigation to the provided route. Adds a new entry into the browser’s history stack. "use client" ๋ฅผ ์ฌ์ฉํ client-side๋ก route๋ฅผ ์ ๊ณตํ ๋ ์ฌ์ฉ router.replace(hr..
API Routes API Routes๋ API๋ฅผ ํธ์ถํ ์ ์๋ Endpoint๋ฅผ ์์ฑํด์ฃผ๋๋ฐ, ์ฝ๊ฒ ๋งํด๋ณด์๋ฉด Next.js์ ํ์ผ ๊ธฐ๋ฐ์ผ๋ก API๋ฅผ ๋ง๋ค ์ ์๊ฒํด์ค๋ค. ๊ทธ๋ฌ๋๊น ๋ค๋ฅธ ๋ฐฑ์๋ ํ๋ ์์ํฌ ํ์์์ด, ๋ฐ๋ก api๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ์ง ์์๋ DB ์ฐ๊ฒฐ๊น์ง ํ ์ ์๊ณ , ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ค๋ ๋ง์ด๋ค. Routing๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ผ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ฐ Nextjs14์ ๊ฒฝ์ฐ๋ pages๊ฐ ์๋ app ํด๋์ ํ์ผ์ ์์ฑํ๊ณ (14๋ฒ์ ผ ์ด์ ์ pages/api), ํจ์๋ฅผ ์์ฑํ๋ฉด ๋๋ค. API Routes๋ Serverless function์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค. Serverless Function์ ์ปจ์
์ ์์ฒญ(์ด๋ฒคํธ)์ด ๋ค์ด์ฌ ๋๋ง๋ค ์ง์ ๋ ํจ์๋ฅผ ์คํ์์ผ ์ํ๋ API๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ..
nextjs ํ๋ก์ ํธ๋ฅผ ํ ๋๋ npm run dev๋ฅผ react ํ๋ก์ ํธ๋ฅผ ํ ๋๋ npm start๋ก ๊ฐ๋ฐ๋ชจ๋๋ฅผ ๋ฐํ๋ค. ์ ํ๋ก์ ํธ์ ๋ฐ๋ผ์ ๋ช
๋ น์ด๊ฐ ๋ค๋ฅผ๊น? ๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๋ฌผ๋ก package.json์ ์ค์ ๋ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค๋๊ฒ ์ค์ํ์ง๋ง ์ด์จ๋ ํ๋ก์ ํธ๋ง๋ค ์ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ์ ๋ฐ๋ผ์ ๋ํดํธ ๊ฐ์ด ๋ค๋ฅด๋ค๋ ๊ฒ! Nextjs _ package.json next dev ⇒ ๊ฐ๋ฐ ๋ชจ๋์์ ์คํ next build ⇒ ํ๋ก๋์
๋น๋ ์ฉ๋๋ก ์ ํ๋ฆฌ์ผ์ด์
๋น๋ next start ⇒ Next.js ํ๋ก๋์
์๋ฒ ์์ next dev ๋ช
๋ น์ด๊ฐ ์คํ๋ฉ๋๋ค. ์ด ๋ช
๋ น์ด๋ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์์ํ๊ณ Next.js ์ ํ๋ฆฌ์ผ์ด์
์ ์คํ next dev ๋ช
๋ น์ด๋ .next ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , Next.j..
๋ฌธ์ ์ํฉ NextJS๋ก ๋น๋ํ ์ดํ์ ๋ธ๋ผ์ฐ์ ์์ reload๋ฅผ ํ๋ฉด ํ์ด์ง ๊ฒฝ๋ก๋ฅผ ์ ๋๋ก ์ฐพ์ง ๋ชป ํ๊ณ ์ด๊ธฐํ๋ฉด์ผ๋ก ๋ณด๋ด๋ฒ๋ฆฌ๋ ์ค๋ฅ๊ฐ ์๊ฒผ๋ค. ์ต์ข
์๋น์ค๋ฅผ ์๋๊ณ ์ด ๋ฌธ์ ๋ก ๊ฝค๋ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์ฉ๊ณ ์์๋ค. ์์ธ ๋ธ๋ผ์ฐ์ ์์ ์์ฒญํ ์ฃผ์์ ์ค์ ๋ฆฌ์์ค์ ์ฃผ์(URL)์ด ๋ฌ๋ผ์ ์๊ธด ์ผ์ธ๋ฐ, ์ด๊ฒ ๋ก์ปฌ์์๋ ์ ๋์๊ฐ๊ธฐ ๋๋ฌธ์ ์ฒ์์ ์ ๋ง ๋ฌด์จ ์ผ์ธ์ง ์์๊ฐ ์์๋ค. static์ S3์ ์ฌ๋ฆฌ๋ฉด์ ์๊ธฐ๋ ๋ฌธ์ ๋ก nextjs๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ผ์ฐํ
์ ํ๋๋ฐ, ์ด๊ฑธ static์ด ์์ฑ๋๋ค. ์ด๋๋ก ๋ฐฐํฌํ๋ฉด ๊ธฐ๋ณธ url ์์๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ๋ค์ ๋๋ ํ ๋ฆฌ๊ฐ ๋ถ๋ ๊ฒฝ์ฐ์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค. ํด๊ฒฐ 1. next.config์ trailingSlash ์ต์
๋ฃ์ด์ฃผ๊ธฐ // next.config.js module.exp..
NextJs ์ TypeScript ํ๊ฒฝ์์ Jest , React-Testing-Library ์
ํ
ํ๊ธฐ (์ฝ์ง์ค์ง๊ฒํจ...)
์
๋ฌด๋ฅผ ๋ณด๋ฉด์ ํ์ฌ ์งํ ์ค์ธ ํ๋ก์ ํธ์ ์ฝ๋๋ฅผ ์กฐ๊ธ ๋ ๊ฐ์ ์ํค๊ณ ์์ผ๋ก์ ์์
์ ํธํ๊ฒ ๊ฐ์ ธ๊ฐ๊ธฐ ์ํด์ ์ด๋ค ์ผ๋ค์ ํ ์ ์์๊น? ํ๋ ์๊ฐ์ ํ๋ค๊ฐ ํ
์คํธ ์ฝ๋ ์
ํ
์ ํด๋ณด์๋ผ๋ ๋ค์ง์ ํ๊ฒ ๋์๋ค. ํ์ฌ ์งํ ์ค์ธ ์ฝ๋์์๋ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋น์ทํ ํ๊ฒฝ์ ์กฐ์ฑํ ํ
์คํธ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์ํ ์ผ์์ ํ
์คํธ ๊ฐ๋ฐํ๊ฒฝ์ ์กฐ์ฑํ๋ ค๊ณ ์๋ํ๋ค. ์ฌ๊ฑธ? ์ฝ์ง์ ์ดํ ์ฌํ ๋์ ํ๊ณ ๋๋๋ค. ํ์ง๋ง ์ฌ์ ํ ๋ฏธ๊ถ์ ๋น ์ ธ์๊ณ ์ด๊ฑธ ๋ค์ ์ฌ์ฐํด๋ผ ์ ์์๊น? ํ๋ ์๋ฌธ์ด ๊ฐํ๊ฒ ๋ค์ด์ ๋ค๊ธํ๊ฒ ์ด๊ณณ์ ๋จ๊ฒจ๋ณด๋ ค๊ณ ํ๋ค. ๋งจ๋ ๋ฃ๊ธฐ๋งํ๊ณ ์ฌ๊ธฐ์ ๊ธฐ ๊ตฌ๊ธ๋ง ํ๋ค๊ฐ ๋ณด๊ธฐ๋ง ํ์ง. ์ ์ ์จ๋ณธ ์ ์ ์๋ ํ
์คํธ ์ฝ๋. ์ฌ๋ฌ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ์งํ์ ํ์๋๋ฐ, ๋ญํ๋ ์ ๋๋ก ์ดํดํ๋ ๊ฒ ์์ผ๋ ์ฝ๋๋ ์์ ์งฌ๋ฝ์ด ๋๊ณ tes..
โช React๋ NextJS๋ฅผ ์ด์ฉํด์ SSR์ ํ ์ ์์ต๋๋ค. โช Static Generation vs Server-side Rendering pre-rendering(์ฌ์ ๋ ๋๋ง) ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํ์ด์ง pre-render - ์ฌ์ ์ HTML ํ์ผ๋ค์ ๋ง๋ ๋ค๋ ์๋ฏธ๋ก ํผํฌ๋จผ์ค๋ฅผ ํฅ์์ํค๊ณ SEO์ ์ต์ ํ๋๋ต๋๋ค. Javascript์ ๋๊ณ ํ์ด์ง๋ฅผ ๋ ๋๋ง์ ํด๋ HTML์ด ๋ ๋๋ง๋๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ํ์ด์ง๊ฐ ๋ก๋๋ฉ๋๋ค. ์ฌ๊ธฐ์ Javascript์ ๋ณต์์์ผ์ฃผ๋ฉด hydration์ด ๋๋ค๊ณ ํฉ๋๋ค. ์ ์ ์ธ ํ์ด์ง๊ฐ ๋์ ์ผ๋ก ๋ฐ๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค Static Generation : ์ ์ ์์ฑ vs Server-side Rendering : ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ์ด ๋ ๊ฐ์ง์ ์ฐจ์ด์ ์ ์ธ์ HTML ์ ๋ง๋๋์
๋..