#1 FRAMEWORK OVERVIEW

#1.0 Library vs Framework

Library

๊ฐœ๋ฐœ์ž๋กœ์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ? ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌด์–ธ๊ฐ€๋ฅผ ํ• ์ˆ˜์žˆ์Œ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฃจํŠธ๊ฐ€ ๋˜๋Š” index ํŒŒ์ผ์—์„œ ์‹œ์ž‘ํ•ด์„œ ์ž์œ ๋กญ๊ฒŒ ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•จ

Framework

์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”๊ฒƒ, ํŠน์ •ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋จ.

โ‡’

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ž์œ ๋กญ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์›ํ•˜๋Š” ๊ตฌํ˜„์„ ๋งŒ๋“ค์–ด ๋‚ด๋Š”๊ฒƒ์ด๊ณ , ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ •ํ•ด์ง„ ํ‹€ ์•ˆ์—์„œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ

#1.1 Pages

PAGES ํด๋” ์•ˆ์— ์›ํ•˜๋Š” url๋กœ ํŒŒ์ผ๋ช…์„ ์ •ํ•ด ๋„ฃ๊ณ  export default ์„ค์ •์„ ํ•˜๋ฉด ์•Œ์•„์„œ url์ด ์„ค์ •๋œ๋‹ค.

์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Œ.

index ๋Š” ํ™ˆํŽ˜์ด์ง€ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

jsx๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด import react ํ•  ํ•„์š” ์—†์ด return์— ์ถ”๊ฐ€ํ•œ๋‹ค. โ‡’ useState ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ ์‚ฌ์šฉ์‹œ์—๋Š” import

404 ํŽ˜์ด์ง€ - ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€, next.js

#1.2 Static Pre Rendering

CSR - CRA

Client์—์„œ ๋ Œ๋”๋ง์„ ์ง„ํ–‰ํ•˜๊ธฐ์— ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ด ๋‹ค์šด๋กœ๋“œ ๋˜๊ณ , ์ž‘๋™ํ•˜๊ธฐ ์ „๊นŒ์ง€ ๋А๋ฆฌ๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Œ

SSR - Next.js && Gatsby.js

๋ฏธ๋ฆฌ ๋ Œ๋”๋ง ๋œ HTML ํŒŒ์ผ์„ ๋ฐ›์•„ ์ž‘๋™ํ•จ โ‡’ ์—ฐ๊ฒฐ ์†๋„๊ฐ€ ๋А๋ฆฌ๊ฑฐ๋‚˜ JS ๊ฐ€ ์—†๋”๋ผ๋„ ํฐ ํ‹€์€ ์œ ์ง€๋จ

Hydration - react.js๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ ์•ˆ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ โ‡’ next.js๋Š” react.js๋ฅผ ๋™์ž‘์‹œ์ผœ ๋ฏธ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์ด ๊ณผ์ •์—์„œ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋ Œ๋”๋ง ๋˜๊ณ  html๋กœ ๋ณ€ํ™˜๋จ โ‡’ react.js ๊ฐ€ ๋กœ๋”ฉ๋˜๋ฉด ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋œ html๊ณผ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฒฐํ•ฉ๋˜์–ด ์ž‘๋™ํ•˜๊ฒŒ ๋œ๋‹ค.

#1.3 Routing

nav bar๋ฅผ ๋งŒ๋“ค๊ณ  ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ ค๋ฉด

import Link from "next/link";

๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ 

<Link href={"/"}>Home</Link>
<Link href="/about">About</Link>

์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค.

Link ํƒœ๊ทธ์— ์„ค์ •ํ•œ ๋‚ด์šฉ์„ ๋‚ด๋ถ€์˜ a ํƒœ๊ทธ์— ์ „๋‹ฌํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

Router

useRouter

ํ˜„์žฌ ์œ„์น˜ํ•œ ํŽ˜์ด์ง€์˜ location ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ํ˜„์žฌ ์œ„์น˜ํ•œ nav๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Œ

#1.4 CSS modules

NextJS์— CSS๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. style

  2. Module ์ด๋ฆ„.module.css ๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์— ์›ํ•˜๋Š” ์Šคํƒ€์ผ์„ ์ž‘์„ฑํ•œ๋‹ค.

className={styles.nav} ์ด ๋ถ€๋ถ„์œผ๋กœ className์„ ํ”„๋กœํผํ‹ฐ ํ˜•์‹์œผ๋กœ ์ ์šฉํ•ด ๋ชจ๋“ˆ์˜ ์Šคํƒ€์ผ์ด ์ ์šฉ๋จ

์—ฌ๋Ÿฌ ๊ฐœ์˜ className ์„ค์ •

className={โ€์ด๋ฆ„1 ์ด๋ฆ„2โ€} ์™€ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ๋˜์•ผ๋˜๊ธฐ์— ๋ฐฑํ‹ฑ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ๋ฐฐ์—ด์„ joinํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•จ

#1.5 Style JSX

NextJS์— CSS๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. JSX style ํƒœ๊ทธ์— JSX๋ฅผ ์ถ”๊ฐ€ํ•ด ์›ํ•˜๋Š” ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ฐ™์€ ํด๋ž˜์Šค๋„ค์ž„์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋”๋ผ๋„ ์ ์šฉ๋˜์ง€ ์•Š์Œ โ‡’ ํด๋ž˜์Šค๋„ค์ž„์ด ๋žœ๋ค์œผ๋กœ ์ •ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์—

#1.6 Custom App

Global Style

jsx global์„ ์„ค์ •ํ•˜๋ฉด ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ์ด ์„ค์ •๋จ

App Component

_app.js ๊ฐ€์žฅ ๋จผ์ € ๋ Œ๋”๋ง๋˜๋ฉด์„œ ํ…œํ”Œ๋ฆฟ && global ์„ค์ •์˜ ์ดˆ์„์ด ๋จ

์ค‘๋ณต๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋‚˜ style์„ ์„ค์ •ํ•ด ๋†“์„ ์ˆ˜ ์žˆ์Œ

Component ์— props ๋กœ ์ „๋‹ฌ๋˜๋Š” ๋‚ด์šฉ์ด ๋ฐ”๋€Œ๋ฉด์„œ ํ™”๋ฉด๋„ ๋ณ€๊ฒฝ๋จ

#1.7 Recap


์œ„ ๋‚ด์šฉ ๋ณต์Šต

Last updated

Was this helpful?