ToyProjects๐Ÿงธ

ํ”„๋กœ์ ํŠธ ์„ธํŒ… - router, path ์ž‘์„ฑ

JanuDev 2025. 7. 9. 15:50

๋งˆ์Œ์— ๋“œ๋Š” ์›น์•ฑ ํ…œํ”Œ๋ฆฟ์ด ์žˆ์–ด์„œ ๊ทธ๊ฑฐ ๋‹ค์šด๋ฐ›๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์„ธํŒ…ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋„๋Œ€์ฒด path๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š”์ง€ ๋ชฐ๋ž๋‹ค.

30๋ถ„ ์ •๋„ ํ—ค๋งค๋Š” ๊ณผ์ •์—์„œ ์–ป์€ ๊ฒฐ๊ณผ... 

์–ด์–ด์–ด์–ด์จŒ๋“  ์„ฑ๊ณต์€ ํ–ˆ์ฅฌ,,,?

์ผ๋‹จ ์˜๋„ํ•œ ๊ฒฐ๊ณผ๋Š” ๋‚˜์˜จ๊ฒƒ์ด๋ฏ€๋กœ ๊ทธ ๊ณผ์ •์„ ๊นŒ๋จน๊ธฐ ์ „์— ์ž‘์„ฑํ• ๋ จ๋‹ค. ๋‚œ ๊ธˆ๋ถ•์–ด๋‹ˆ๊นŒ...๐ŸŸ

 

1. vite.config.ts์— alias๋กœ @ ์„ค์ •ํ•˜๊ธฐ

๋‚œ ์ด๊ฑฐ ์ž๋™์œผ๋กœ ๋˜๋Š” ์ง€์ •์–ด์ธ์ค„ ์•Œ์•˜๋”๋‹ˆ ๋‚ด๊ฐ€ ์…€ํ”„๋กœ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š”๊ฑฐ๋”๋ผ?;

์–ด์จŒ๋“  alias๋กœ ์„ค์ •ํ•ด์คฌ๋‹ค.

์—ฌ๊ธฐ์„œ path๋ž€ ๋‚ด ํŒŒ์ผ์— ์žˆ๋Š” paths.ts๊ฐ€ ์•„๋‹Œ(๋‚œ ์ด๊ฑด์ค„ ์•Œ์•˜์Œ ๊ทธ๋Ÿด๋ฆฌ๊ฐ€ ์—†๋Š”๋ฐ ใ…‹ใ…Ž) Node.js์˜ ๋‚ด์žฅ ๋ชจ๋“ˆ์ธ path๋ฅผ ์˜๋ฏธํ•œ๋‹ค. Vite์„ค์ • ํŒŒ์ผ์€ Node.jsํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜์ง€๋งŒ Typescript๊ฐ€ path๋ชจ๋“ˆ ํƒ€์ž… ์„ ์–ธ์„ ์ฐพ์ง€ ๋ชปํ•ด์„œ ๊ณ„์† ๋นจ๊ฐ„์ค„์ด ๋‚˜ํƒ€๋‚ฌ๋‹ค.

โžก๏ธ๊ณ ๋กœ @types/node ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๊ฒƒ! ๋‚œ ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ–ˆ๋”๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ๋ฌ๋‹ค.

์œ„ ํŒจํ‚ค์ง€(@types/node)๋ฅผ ์„ค์น˜ํ•ด์•ผ 'path'์™€ 'url' ๋‚ด์žฅ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค!

 

์ •์ƒ์ ์œผ๋กœ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์—ˆ๋‹ค๋ฉด 'path'์™€ 'url'์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

url์—์„œ fileURLToPath๋ฅผ importํ•˜๊ณ , __filename๊ณผ __dirname์„ ์„ ์–ธํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  vite.config.ts์— ์žˆ๋Š” defineConfig์•ˆ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค์ •์„ ์ž‘์„ฑํ•œ๋‹ค.

๊น”๋”๋”ฐ๋ฆฌ ์ž˜ ์ž‘์„ฑํ–ˆ๋‹ค. ํžˆํžˆ!

 

2. tsconfig.json์—๋„ path ์ž‘์„ฑํ•˜๊ธฐ

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์–Œ์ „๋”ฐ๋ฆฌ ์ž˜ ์ž‘์„ฑํ•˜๋„๋ก ํ•˜์ž.

 

3. routerํด๋” ์•ˆ ํŒŒ์ผ๋“ค์—์„œ ๊ฒฝ๋กœ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ

(1) sitemap.ts

path์— ๊ฒฝ๋กœ ์ž˜ ์ง€์ •ํ•ด์ฃผ๊ณ ,

 

(2) paths.ts

์—ฌ๊ธฐ์„œ๋„ /pages/journal์ฒ˜๋Ÿผ ๋‚˜์˜ค๋„๋ก ์„ธํŒ… ํ•˜๊ณ ,

 

(3) router.tsx

const Journal = lazy(() => import('@/pages/journal'));

const router = createBrowserRouter(
... ์ƒ๋žต,
children: [
            {
              index: true,
              element: <Dashboard />,
            },
            {
              path: '/pages/journal',
              element : <Journal />,
            }
          ],
)

 

์ €๋ ‡๊ฒŒ Journal์˜ path๋ฅผ /pages/journal์ด ๋‚˜์˜ค๋„๋ก ์ž˜ ์„ค์ •ํ•œ๋‹ค...

 

 

๋!