Framework/Next.js

[Next.js & React] ํŽ˜์ด์ง€ & ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…

yuri lee 2022. 11. 4. 08:31
๋ฐ˜์‘ํ˜•
์ด ๊ธ€์€ udemy์˜ Next.js & React - ์™„๋ฒฝ ์ •๋ณต ๊ฐ€์ด๋“œ (incl. Two Paths) ๊ฐ•์ขŒ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

52. ๋ชจ๋“ˆ ๊ฐœ์š”

ํŒŒ์ผ ๊ธฐ๋ฐ˜์˜ routing, ์ •์  ๋ฐ ๋™์  routes, ํŽ˜์ด์ง€๊ฐ„์˜ ๋„ค๋น„๊ฒŒ์ดํŒ…์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

53. ์‹œ์ž‘ ์„ค์ • Setup

์‚ฌ์ดํŠธ ์†Œ์Šค ์ฝ”๋“œ ์ฐธ๊ณ 

54. ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

React.js๋Š” react-router-dom์„ ์‚ฌ์šฉํ•˜์—ฌ, ๋ผ์šฐํŠธ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Next.js๋Š” ๋ผ์šฐํ„ฐ๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ , ๋ผ์šฐํŠธ์™€ ํŽ˜์ด์ง€ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ JSX์™€ JS ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

Next.js์—์„œ๋Š” React ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŠน๋ณ„ํ•œ ํด๋”์— ์ผ๋ฐ˜์ ์ธ React ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ Next.js๊ฐ€ ์„ค์ •๋œ ํด๋” ๊ตฌ์กฐ๋กœ๋ถ€ํ„ฐ ํ”„๋กœ์ ํŠธ์˜ ๋ผ์šฐํŠธ๋ฅผ ๋„์ถœํ•ด ๋‚ด๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค. special/pages ํด๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, Next.js๊ฐ€ ๋ผ์šฐํŠธ ๊ตฌ์กฐ๋ฅผ ๋„์ถœํ•˜๊ธฐ ์œ„ํ•ด ์ด ํด๋”๋ฅผ ์ž๋™์œผ๋กœ ํ™•์ธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. index.js๋Š” ํ˜„์žฌ ์†ํ•œ ํด๋”๋ฅผ ์œ„ํ•œ ๋ผ์šฐํŠธ ๊ฒฝ๋กœ๋กœ ๊ฐ€์ •ํ•˜๊ฒŒ ๋  ํŠน๋ณ„ํ•œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

55. ์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€ ์ถ”๊ฐ€ํ•˜๊ธฐ

page ํด๋”์— index.js ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

export default function HomePage() {
  return (
    <div>
      <h1>The Home Page</h1>
    </div>
  );
}
 
 
 
56. Adding a Named(์ด๋ฆ„์ด ๋ถ™์€) / Static Route File 
page ํด๋”์— about.js ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ๋‹ค์Œ์˜ ํ˜•์‹์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
 

57.  ์ค‘์ฒฉ(Nested) ๊ฒฝ๋กœ & ๋ผ์šฐํŠธ ์ž‘์—… 

์ค‘์ฒฉ ๊ฒฝ๋กœ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•๋งŒ ๋‹ค๋ฅผ ๋ฟ ๊ฒฐ๊ณผ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค. ์„ ํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ pages ํด๋” ์•ˆ์— ํ•˜์œ„ ํด๋”๋ฅผ ์ƒ์„ฑํ•ด ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ๊ทธ๋ฃนํ™” ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. 

 
 

58. ๋™์ (Dynamic) ๊ฒฝ๋กœ & ๋ผ์šฐํŠธ  ์ถ”๊ฐ€

portfolio/ ํด๋” ๋ฐ‘์— [projectid].js ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์ค์‹œ๋‹ค. ์ด๋•Œ ๋ฐ˜๋“œ์‹œ ๋Œ€๊ด„ํ˜ธ๋Š” ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ด„ํ˜ธ๋ฅผ ๋ถ™์—ฌ์•ผ Next.js์— ์ฃผ์†Œ๋ฅผ /porfolio/projectid๋กœ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ , projectid๋ฅผ placeholder๋กœ ์ธ์‹ํ•˜๊ณ  ์ปดํฌ๋„ŒํŠธ์— ์—‘์„ธ์Šค ํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

์ดํ›„ ์–ด๋–ค ๊ฐ’์„ ์ž…๋ ฅํ•˜๋“  ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” [projectid].js๋ผ๋Š” placeholder๊ฐ€ ์žˆ๊ณ , ๊ทธ ์•ˆ์— ๊ตฌ์ฒด์ ์ธ ๊ฐ’์„ ์ฑ„์›Œ๋„ฃ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•œ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์€ /list๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ชฉ๋ก ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. placeholder์— ๋Œ€ํ•œ ๊ณ ์œ ๊ฐ’์œผ๋กœ ์ธ์‹๋˜๋Š” ๊ฐ’์„ ํ™•์ธํ•˜๋ฉด, ๊ทธ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ์ด๋ฏธ /portfolio/list ๋ฅผ ์ž…๋ ฅ ์‹œ ํด๋”์— ์ด๋ฏธ list.js ํŒŒ์ผ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์  ํŒŒ์ผ๋ณด๋‹ค ์ด ํŒŒ์ผ์„ ์šฐ์„ ์‹œ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•˜๋Š” ํŽ˜์ด์ง€ ex) ์˜จ๋ผ์ธ ์Šคํ† ์–ด ์ƒํ’ˆ, ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€ ๋“ฑ ์—์„œ ์ด ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ ค๋ฉด ์ปดํฌ๋„ŒํŠธ์— ์ž…๋ ฅํ•œ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ project id๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ , ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—์„œ fetch ํ•œ ๊ณ ์œ ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉํ•ด์„œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 
 
 
 
 

59. ๋™์  ๊ฒฝ๋กœ Segment Data ์ถ”์ถœํ•˜๊ธฐ

์‚ฌ์šฉ์ž๊ฐ€ URL์— ์ž…๋ ฅํ•œ ๊ตฌ์ฒด์ ์ธ ๊ฐ’์— ์—‘์„ธ์Šค ํ•˜๋ ค๋ฉด Next.js์˜ ํŠน์ˆ˜ํ•œ hook 'useRouter' ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. query๋ผ๋Š” ๋ผ์šฐํ„ฐ ํ”„๋กœํผํ‹ฐ๋กœ URL์— ๋ถ€ํ˜ธํ™”๋œ ๊ตฌ์ฒด์ ์ธ ๋ฐ์ดํ„ฐ์— ์—‘์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”ํ›„ router.query.projectid ๋ผ๋Š” ID๋ฅผ ํ†ตํ•ด ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์„ fetcing ํ•˜๋„๋ก ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 

60. ์ค‘์ฒฉ๋œ ๋™์  ๋ผ์šฐํŠธ & ๊ฒฝ๋กœ ๊ตฌ์ถ•ํ•˜๊ธฐ

client ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ , ๋‚ด๋ถ€์— ์ค‘์ฒฉ๋œ id ํด๋”๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ๋™์  ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 

61. Catch-All ๋ผ์šฐํŠธ ์ถ”๊ฐ€ํ•˜๊ธฐ

ํ•˜์œ„ ํด๋”์ธ blog๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. /blog/the-id-of-a-post, /blog/2022/10/11 ๋“ฑ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” URL ํ˜•์‹์ด ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์„ Catch-all ๋ผ์šฐํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์ผํ•œ ์ปดํฌ๋„ŒํŠธ๋กœ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

JavaScript์˜ ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž ๊ฐ™์ด ๋งˆ์นจํ‘œ ์„ธ๊ฐœ (...)๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ์ด๋ฆ„์€ ํŽธ์˜๋Œ€๋กœ ์ง€์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ Segment ๊ฐ’๋งŒ ๋™์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ Segment์˜ ๊ฐฏ์ˆ˜๋„ ๋™์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

62. "Link" ์ปดํฌ๋„ŒํŠธ๋กœ Navigating ํ•˜๊ธฐ

pages/index.js ์— ์ผ๋ฐ˜์ ์œผ๋กœ <a>๋ฅผ ์ด์šฉํ•ด ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋™์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ์ƒˆ HTTP ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ React ์•ฑ์„ ์‹คํ–‰ํ•  ๋•Œ ๊ฐ–๋Š” ์•ฑ ์ƒํƒœ(state)๊ฐ€ ๋ฐ”๋€Œ๋Š” ์ƒํ™ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. React Context๋‚˜ Redux์—์„œ ์ €์žฅํ•˜๋Š” app-wide ์ƒํƒœ๊ฐ€ ์ƒˆ ์š”์ฒญ์œผ๋กœ ์ธํ•ด ์ƒˆ HTML ํŽ˜์ด์ง€๋ฅผ ๋ฐ›์Œ์œผ๋กœ์จ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Next.js๋ฅผ ์‚ฌ์šฉํ•˜๋“  ์•ˆ ํ•˜๋“  ๊ฐ„์— React ์•ฑ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์œผ๋กœ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ next.js router๋กœ๋ถ€ํ„ฐ link ์ปดํฌ๋„ŒํŠธ๋ฅผ  import ํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

import Link from "next/link";

export default function HomePage() {
  return (
    <div>
      <h1>The Home Page</h1>
      <ul>
        {/* <li>
          <a href="/portfolio">Portfolio</a>
        </li> */}
        <li>
          <Link href="/portfolio">Portfolio</Link>
        </li>
        <li>
          <Link href="/clients">Clients</Link>
        </li>
      </ul>
    </div>
  );
}

63. ๋™์  ๋ผ์šฐํŠธ๋กœ Navigating ํ•˜๊ธฐ

<Link>์—๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ํ…์ŠคํŠธ๊ฐ€ ์žˆ๊ณ , ํด๋ผ์ด์–ธํŠธ ์ด๋ฆ„์„ ์ถœ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Link ๋Œ€์ƒ์˜ ๊ฐ’์œผ๋กœ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด์„œ ํ•˜๋“œ ์ฝ”๋”ฉํ•œ /clients๋ฅผ ํฌํ•จํ•œ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋งˆ๋‹ค id๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋™์ ์ธ ${client.id}๋ฅผ ์‚ฝ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. 

64. Link Href๋ฅผ ์„ค์ •ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฌธ๋ฒ•

<Link>์˜ href ํ”„๋กœํผํ‹ฐ์— ์ „๋‹ฌํ•  ๋Œ€์•ˆ ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋™ํ•˜๋ ค๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹  ๊ฐ์ฒด๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. {{}} ํ˜•ํƒœ๋Š” ํŠน์ˆ˜ ๊ตฌ๋ฌธ์ด ์•„๋‹ˆ๋ผ JavaScript ํ‘œํ˜„์‹์„ ์ฝ๋Š” ๋‹จ์ผ ์ค‘๊ด„ํ˜ธ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. pathname๊ณผ query ํ”„๋กœํผํ‹ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

65. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ Navigating ํ•˜๊ธฐ

router.push๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด <Link> ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ”„๋กœ๊ทธ๋žจํ™” ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. /client/max/projecta๋กœ ์ด๋™ํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, ์ €์žฅ ํ›„ Maximillan์„ ํด๋ฆญํ•˜๊ณ , ํ”„๋กœ์ ํŠธ A ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด /client/max/project๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. 

 

router.push ๋Œ€์‹  router.replace๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ํŽ˜์ด์ง€๋ฅผ ์ฝ”๋“œ์˜ ํŽ˜์ด์ง€๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ํŽ˜์ด์ง€ ์ด๋™ ํ›„์—๋Š” ๋˜๋Œ์•„๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์•ž์„œ ๋ฐฐ์šด ๊ฒƒ์ฒ˜๋Ÿผ ๋งํฌ ์ž๋ฆฌ์— pathname์ธ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 

66.  ์ปค์Šคํ…€ 404 Page  ์ถ”๊ฐ€ํ•˜๊ธฐ

404 ํŽ˜์ด์ง€๋ฅผ ์ž์ฒด ์ฝ˜ํ…์ธ ์™€ ์Šคํƒ€์ผ๋กœ ๊พธ๋ฐ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์ด๋ฆ„์œผ๋กœ 404๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ 404 ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ Next.js๊ฐ€ ์ด ํŒŒ์ผ์ด ๋ฐ˜ํ™˜ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋Œ€๋ฌธ์ž…๋‹ˆ๋‹ค. 

67.  ๋ชจ๋“ˆ ์š”์•ฝ

ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…์— ๋Œ€ํ•ด ๊นŠ๊ฒŒ ๋ฐฐ์šฐ๊ณ , Next.js๋ฅผ ํ†ตํ•œ ํŽ˜์ด์ง€ ์„ค์ • ๋ฐฉ๋ฒ•๊ณผ ํŽ˜์ด์ง€ ์ด๋™ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ๋ดค์Šต๋‹ˆ๋‹ค. 

 

๐Ÿ’กFile-based vs Code-based

 

File-based Routing (NextJS)

  1. ์ถ”๊ฐ€ ๋ณด์ผ๋Ÿฌ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. 
  2. ์ง๊ด€์ ์ด๋‹ค
  3. File + folder ๊ตฌ์กฐ๊ฐ€ ๋ผ์šฐํŒ…์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค
  4. ํŽ˜์ด์ง€ ์ด๋™ ์‹œ <Link> ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

Code-based

  1. ์ถ”๊ฐ€ ๋ณด์ผ๋Ÿฌ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค ( <Switch>, <Route> ..)
  2. ๋ฐฐ์›Œ์•ผ ํ•  ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ๋‚˜ ๊ฐœ๋…์ด ํ•„์š”ํ•˜๋‹ค. 
  3. ํŒŒ์ผ๊ณผ ํด๋” ์„ค์ •์ด ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค.
  4. ํŽ˜์ด์ง€ ์ด๋™ ์‹œ <Link> ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

68. ๋ชจ๋“ˆ ๋ฆฌ์†Œ์Šค

์‚ฌ์ดํŠธ ์†Œ์Šค ์ฝ”๋“œ ์ฐธ๊ณ  


๋ฐ˜์‘ํ˜•