shadcn ui ์์ ์ ๊ณตํ๋ Drawer DrawerA drawer component for React.ui.shadcn.com shadcn ui ์์ ์ ๊ณตํ๋ Drawer ์ ๋ฐฉํฅ์ ์๋์์ ์๋ก ์ฌ๋ผ์จ๋ค. ํ์
ํํ๋ก ๋์ฐ๋ ๊ฒ๋ ์์๋ก ๋ณด์ฌ์ฃผ๊ธฐ๋ ํ์ง๋ง ๋๋ ์ปค์คํ
ํด์ ์ค๋ฅธ์ชฝ์ ์ค๋ฌด์ค~ ํ๊ฒ ๋์ค๊ฒ ๊ตฌํํด์ผํ๋ ์ํฉ์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ ์ํฉ์์๋ ์ค๋ฅธ์ชฝ์์ ๋์ค๋๊ฑฐ์ง๋ง ๋์์ธ์ด ๋ฐ๋๋ฉด ๋ ์ด๋ป๊ฒ ๋ ์ง ๋ชจ๋ฅด๋ ์ํฉ์ด๊ธฐ ๋๋ฌธ์ direction์ ๋ณ์๋ก ๋ฃ์ด์๋ณ๊ฒฝํ ์ ์๋ ๋ฐฉํฅ์ ์ฐพ์๋ค. shadcn/ui๋ ๋ฒ๋ค๋์ง ์์ ์ปดํฌ๋ํธ ์์ค ์ฝ๋๋ฅผ ํ๋ก์ ํธ์ ์์กด์ฑ์ผ๋ก ์ถ๊ฐํ์ง ์๊ณ , ๋ง ๊ทธ๋๋ก ๋ณต๋ถํด์ ์ปดํฌ๋ํธ ์ฝ๋๋ฅผ ์จ์ ํ ์ฌ์ฉํ ์ ์๋ค. ์ด ํฌ์ธํธ๊ฐ ์ค์ํ๋ค. ๋ํ๋์์ ๋ค์ด๊ฐ๋๊ฒ ์๋..
nextjs
๊ฐ์ธ์ ์ธ ํ์๋ก ์ธํด์ ๋ง๋ค๊ธฐ ์์ํ๋ ํ์ ํธ๋ํน ์น. ๋
์ํ๋ ์๊ฐ์ ๋ง๋ค์ด๋ณด๊ณ ์ธก์ ํด๋ณด๊ฒ ๋ค๊ณ ์์ํ ๊ฒ์ด์๋๋ฐ ์ง๋ ๋ฌ ๊ธฐ๋ก๊ณผ ํ์ฌ์ ๊ธฐ๋ก ๋น๊ต / ๋๋ ๋ชฉํ ์๊ฐ์ ์ ํด๋๊ณ ํ์ฌ ์ผ๋ง๋ ์ด๋ค๋์ง ์ฒดํฌํ๋ ๋ถ๋ถ๊น์ง ๋ ํด๋ณด๊ณ ์ถ์ด์ก๋ค. ๊ทธ ํํ์ 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..
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 ๋ผ์ฐํ
๋ฌธ์ ๋ ์ด์ ํด๊ฒฐ ๋ ๋ฏ ํ๋ค. ๊ด๋ จ ์๋ฌ ํฌ์คํ
๋ณด๋ฌ๊ฐ๊ธฐ (๐๐ป https://mindevlog.tistory.com/191) ๋ ๋ค๋ฅธ ๋ผ์ฐํ
๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์๋ค. ์ ์ ๋ผ์ฐํ
์ cloudFront๋ก ํด๊ฒฐ์ ๋ดค๋๋ฐ, ์ด๋ฒ์ ๋์ ๋ผ์ฐํ
์ด ๋ฌธ์ ์๋ค!๐ ์ด๋ ํ ๊ฒ์ํ์ ๊ฒ์๋ฌผ ์์ธ๋ก ๋ค์ด๊ฐ ๋ , `/file/[id]` ์ด๋ฐ์์ผ๋ก ๋์ ๋ผ์ฐํ
(dynamic routing) ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์๋ค. ๋ธ๋ผ์ฐ์ ์์ ์๋ก๊ณ ์นจ(refresh)๋ฅผ ํ๋ฉด, ํด๋น ์์ธ ํ์ด์ง์ ์ถ๋ ฅ๋์ด์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ด ์ฌ๋ผ์ง๊ณ , ์ฌ์ง์ด html ์ญ์ ์ถ๋ ฅ ๋ชปํ๊ณ ๊ธฐ๋ณธํ์ด์ง๋ก ๋ณด๋ด๋ฒ๋ฆฌ๋ ๊ฒ ์๋๊ฐ... ๋ฐฉ๋ฒ์ ์ฐพ์์ AWS cloudfront ํจ์๋ฅผ ๋ค์ ์์ฑ๋ ํด๋ณด๊ณ , lambda๋ฅผ ์จ์ผํ๋ค - next..
๋ฌธ์ ์ํฉ 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 ์ ๋ง๋๋์
๋..
{ "presets": ["next/babel"] } github์์ ํ๋ก์ ํธ๋ฅผ ํด๋ก ํ ํ์ npm installํ๊ณ npm run build๋ฅผ ํ๋๋ฐ, SWC failed to load ์ค๋ฅ๊ฐ ๋ฌ๋ค. ๊ทธ๋ฆฌ๊ณ https://nextjs.org/docs/messages/failed-loading-swc ์ฌ๊ธฐ๋ฅผ ๋ฐฉ๋ฌธํด๋ณด๋ผ๋ ๋ฉ์ธ์ง๊ฐ ๋ ์ ๋ดค๋๋ node modules๊ณผ package-lock.json์ ์ง์ฐ๊ณ ๋ค์ npm install์ ํ๊ฑฐ๋, ๊ทธ๋๋ ์ค๋ฅ๊ฐ ๊ณ์๋๋ฉด .babelrcํ์ผ์ ๋ง๋ค์ด๋ผ๊ณ ํ๋ค. ์ฒซ๋ฒ์งธ ๋
ธ๋ ๋ชจ๋์ ์ง์ ๋๋ฐ๋, ๋ค๋ฅธ ์ค๋ฅ๊ฐ ๋ ์๊ฒจ์ ํ๋ก์ ํธ ์์ฒด๋ฅผ ๋ค์ ํด๋ก ๋ฐ๊ณ , babelrc ํ์ผ์ ๋ง๋ค์ด์คฌ๋ค! ์๋์ ๊ฐ์ด ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค. ํ์ผ์ ์์น๋ ์ต์๋จ์ด๋ค! .babelrc { "..