Syw.Frontend

๐Ÿ“˜ Next.js ๊ธฐ์ดˆ ๊ฐ•์ขŒ

1๋‹จ๊ณ„. Next.js ์ž…๋ฌธ (๊ฐœ๋… & ํ™œ์šฉ ๊ธฐ์ดˆ)

1-1. Next.js ์‹œ์ž‘ํ•˜๊ธฐ + SCSS + ๊ธ€๋กœ๋ฒŒ ํฐํŠธ ์„ธํŒ…

1. Next.js๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

  • React: UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (CSR ์ค‘์‹ฌ)

  • Next.js: React ๊ธฐ๋ฐ˜ ํ’€์Šคํƒ ํ”„๋ ˆ์ž„์›Œํฌ

    โ†’ SSR/SSG ์ง€์›, ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…, API, SEO ์ตœ์ ํ™”, Vercel ๋ฐฐํฌ


2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค€๋น„

(1) Node.js ์„ค์น˜ ํ™•์ธ

node -v
npm -v

โ†’ Node.js 18 ์ด์ƒ ๊ถŒ์žฅ

(2) Next.js ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

npx create-next-app@latest next-tutorial
cd next-tutorial
npm run dev

โ†’ ๋ธŒ๋ผ์šฐ์ € http://localhost:3000 ์ ‘์† โ†’ Next.js ๊ธฐ๋ณธ ํ™”๋ฉด ํ™•์ธ


3. SCSS ์„ค์น˜

npm install sass

โ†’ ์ด์ œ *.module.scss ํŒŒ์ผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ


4. ๊ธ€๋กœ๋ฒŒ ํฐํŠธ(Noto Sans KR) ์ ์šฉ

Next.js 13 ์ด์ƒ์—์„œ๋Š” next/font๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค.

Google Fonts์—์„œ ์ง์ ‘ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์–ด์š”.

(1) app/layout.tsx ์ˆ˜์ •

import './globals.css';
import { Noto_Sans_KR } from 'next/font/google';

const notoSansKR = Noto_Sans_KR({
  subsets: ['latin'],
  weight: ['400', '500', '700'],
});

export const metadata = {
  title: 'My Next.js App',
  description: 'Next.js ๊ธฐ์ดˆ ๊ฐ•์ขŒ ํ”„๋กœ์ ํŠธ',
};

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="ko">
      <body className={notoSansKR.className}>{children}</body>
    </html>
  );
}

๐Ÿ‘‰ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ „์ฒด ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ณธ ํฐํŠธ๊ฐ€ Noto Sans KR๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.


5. SCSS ๋ชจ๋“ˆ ์ ์šฉ

(1) styles/home.module.scss

.title {
  font-size: 2rem;
  color: #0070f3;
  text-align: center;
  margin-top: 2rem;
}

.description {
  color: #555;
  text-align: center;
  font-size: 1.2rem;
}

(2) app/page.tsx

import styles from "../styles/home.module.scss";

export default function Home() {
  return (
    <main>
      <h1 className={styles.title}>Hello Next.js ๐Ÿš€</h1>
      <p className={styles.description}>
        ์ด๊ฒƒ์ด ๋‚˜์˜ ์ฒซ ๋ฒˆ์งธ Next.js + SCSS + Noto Sans KR ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.
      </p>
    </main>
  );
}

6. ์˜ค๋Š˜์˜ ์ •๋ฆฌ

  • Next.js ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ (create-next-app)
  • SCSS ์„ค์น˜ ๋ฐ ๋ชจ๋“ˆ ์Šคํƒ€์ผ ์ ์šฉ
  • ๊ธ€๋กœ๋ฒŒ ํฐํŠธ(Noto Sans KR) ์ ์šฉ โ†’ layout.tsx์— ์ „์—ญ ์„ธํŒ…
  • ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ์Šคํƒ€์ผ ์™„์„ฑ ๐ŸŽ‰

๐Ÿ“š ์ €์žฅ์†Œ

GitHub - heroyooi/next-tutorial at ch1_1

๐Ÿ’ฌ ๋Œ“๊ธ€

    โ€ป ๋กœ๊ทธ์ธ ํ›„ ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.