# [[Next.js File Naming and Routing]] ## ๐Ÿ“Œ Brief Summary Next.js๋Š” ํŠน์ • ํŒŒ์ผ ์ด๋ฆ„์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ผ์šฐํŠธ์™€ UI ์ƒํƒœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [1]. ํ•ต์‹ฌ ํŒŒ์ผ์ธ `page.js`, `layout.js`, `error.js`, `loading.js`๋ฅผ ํ†ตํ•ด ๋ผ์šฐํŠธ, ๊ณต์œ  ๋ ˆ์ด์•„์›ƒ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐ ๋กœ๋”ฉ ์ƒํƒœ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค [1]. ์šด์˜์ฒด์ œ ๊ฐ„ ํ˜ธํ™˜์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ํŒŒ์ผ ์ด๋ฆ„์—๋Š” kebab-case๋ฅผ, ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์—๋Š” PascalCase๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—„๊ฒฉํ•œ ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ํ”„๋ก ํŠธ์—”๋“œ ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [1-3]. ## ๐Ÿ“– Core Content - **ํ•ต์‹ฌ ๋ผ์šฐํŒ… ํŒŒ์ผ**: Next.js์˜ ๋ผ์šฐํŒ… ๊ตฌ์กฐ๋Š” ํŠน์ • ์—ญํ• ์ด ์ง€์ •๋œ ํŒŒ์ผ๋ช…์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค [1]. `page.js`๋Š” ๊ฐœ๋ณ„ ๋ผ์šฐํŠธ๋ฅผ ์ •์˜ํ•˜๊ณ , `layout.js`๋Š” ๊ณต์œ  ๋ ˆ์ด์•„์›ƒ์„, `error.js`๋Š” ์ปค์Šคํ…€ ์—๋Ÿฌ ํ™”๋ฉด์„, `loading.js`๋Š” ๋กœ๋”ฉ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [1]. - **๋™์  ๋ผ์šฐํŠธ(Dynamic Routes)**: ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ ์ธ URL ๊ฒฝ๋กœ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค [1]. ๋‹จ์ผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š” ๋™์  ๋ผ์šฐํŠธ์—๋Š” `[param]`์„ ์‚ฌ์šฉํ•˜๊ณ , ์—ฌ๋Ÿฌ ๊ฒฝ๋กœ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ชจ๋‘ ์žก์•„๋‚ด๋Š” ํฌ๊ด„์ (catch-all) ๋ผ์šฐํŠธ์—๋Š” `[...param]` ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [1]. - **ํŒŒ์ผ ๋ฐ ์ปดํฌ๋„ŒํŠธ ๋ช…๋ช… ํ‘œ์ค€**: ํŒŒ์ผ ์ด๋ฆ„์€ URL ์นœํ™”์ ์ด๊ณ  ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š” ์šด์˜์ฒด์ œ์—์„œ์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด `user-profile.tsx`์™€ ๊ฐ™์ด kebab-case๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1-4]. ๋ฐ˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ ๋‚ด๋ถ€์— ์ •์˜๋œ React ์ปดํฌ๋„ŒํŠธ๋Š” `UserProfile`๊ณผ ๊ฐ™์ด PascalCase๋ฅผ ์ ์šฉํ•˜์—ฌ HTML ์š”์†Œ์™€ ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [3, 4]. ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜, props ๋ฐ ์ปค์Šคํ…€ ํ›…์€ camelCase๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค [1, 4, 5]. - **๋ผ์šฐํŠธ ๊ทธ๋ฃน(Route Groups)**: ํด๋” ์ด๋ฆ„์„ `(folderName)`๊ณผ ๊ฐ™์ด ๊ด„ํ˜ธ๋กœ ๋ฌถ์œผ๋ฉด ๋ผ์šฐํŠธ ๊ทธ๋ฃน์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค [6]. ์ด ๋ฐฉ์‹์€ URL ๊ฒฝ๋กœ ๊ตฌ์กฐ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ ๊ด€๋ จ๋œ ๋ผ์šฐํŠธ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค(์˜ˆ: `(marketing)/about/page.tsx`๋Š” ์—ฌ์ „ํžˆ `/about`์œผ๋กœ ํ•ด์„๋จ) [6, 7]. ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ์„น์…˜๋ณ„๋กœ ๋ณ„๋„์˜ ๋ ˆ์ด์•„์›ƒ์„ ์ ์šฉํ•˜๊ธฐ ์‰ฌ์›Œ์ง€๋‚˜, ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์—์„œ ๋™์ผํ•œ URL ๊ฒฝ๋กœ๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [6, 7]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[React Folder Structure]], [[Naming Conventions in React]], [[Clean Code Principles]] - **Projects/Contexts:** [[Next.js]], [[Frontend Scalability]] - **Contradictions/Notes:** ์ œ๊ณต๋œ ๋ชจ๋“  ์†Œ์Šค์—์„œ Next.js ๋ฐ React ํ”„๋กœ์ ํŠธ์˜ ํŒŒ์ผ๋ช…์—๋Š” kebab-case๋ฅผ, ์ปดํฌ๋„ŒํŠธ๋ช…์—๋Š” PascalCase๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ™•์žฅ์„ฑ์„ ์œ„ํ•œ ์ตœ์ƒ์˜ ๊ด€ํ–‰(Best Practice)์ž„์„ ์ผ๊ด€๋˜๊ฒŒ ์ฃผ์žฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ชจ์ˆœ๋˜๋Š” ์˜๊ฒฌ์€ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค [1-3]. --- *Last updated: 2026-04-26*