Next.js ํŠœํ† ๋ฆฌ์–ผ

9/23/2025

https://nextjs.org/learn/dashboard-app
๊ณต์‹ ํŠœํ† ๋ฆฌ์–ผ์„ ํ•œ๋ฒˆ ์ฝ์–ด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

1. Getting Started

/app : ํŽ˜์ด์ง€, ์ปดํฌ๋„ŒํŠธ, ๋กœ์ง ๋“ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋ชจ๋“ ๊ฒƒ์ด ๋“ค์–ด์žˆ๋Š” ๊ฒฝ๋กœ
/app/lib : ์žฌ์‚ฌ์šฉํ•  ํ•จ์ˆ˜๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๊ฒฝ๋กœ. (๋ฐ์ดํ„ฐ ํŒจ์นญ ๋“ฑ)
/app/ui : UI ์ปดํฌ๋„ŒํŠธ๋“ค
/public : ์ •์  ํŒŒ์ผ๋“ค

2. CSS Styling

Next.js๋Š” ํ…Œ์ผ์œˆ๋“œ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•œ๋‹ค.

CSS๋ชจ๋“ˆ์ด๋ผ๋Š” ๊ฒƒ๋„ ์žˆ๋Š”๋ฐ,

/*home.module.css*/
.shape {
  height: 0;
  width: 0;
  border-bottom: 30px solid black;
  border-left: 20px solid transparent;
  border-right: 20px solid transparent;
}

์ด๋ ‡๊ฒŒ ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ์ผ๋ฐ˜ cssํŒŒ์ผ์„

import styles from "@/app/ui/home.module.css";

export default function Page(){
	return(
		<main className="flex min-h-screen flex-col p-6">
	      <div className={styles.shape}>
	        <AcmeLogo />
	      </div>
		...      
	)
}

์ด๋ ‡๊ฒŒ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ€ด์ฆˆ : CSS๋ชจ๋“ˆ์˜ ์žฅ์ ์€?
์ •๋‹ต : Provide a way to make CSS classes locally scoped to components by default, reducing the risk of styling conflicts.
CSS๋ชจ๋“ˆ์€ ๊ฐ ์ปดํฌ๋„ŒํŠธ๋งˆ๋‹ค ๊ณ ์œ ํ•œ ํด๋ž˜์Šค ๋„ค์ž„์„ ์ƒ์„ฑํ•ด ์Šคํƒ€์ผ๋ง ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

clsx ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์žˆ๋‹ค.๊นƒํ—™
์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ์Šคํƒ€์ผ์„ ์ฃผ๊ณ ์‹ถ์„๋•Œ(์ฆ‰ ํด๋ž˜์Šค๋„ค์ž„์„ ์ฃผ๊ณ ์‹ถ์„๋•Œ) ์‚ฌ์šฉํ•œ๋‹ค.

3. Optimizing Fonts and Images

4. Creating Layouts and Pages

5. Navigating Between Pages

Next.js๋Š” ๊ธฐ์กด์˜ <a> ํƒœ๊ทธ ๋Œ€์‹  <Link>์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.
<Link>์ปดํฌ๋„ŒํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋„ค๋น„๊ฒŒ์ด์…˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š”๋ฐ, ์ด๊ฒƒ์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ํŽ˜์ด์ง€ ์ด๋™์‹œ๋งˆ๋‹ค ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๋ Œ๋”๋ง ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.