HomeReact & Next.js ๊ฒจ์šฐ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ1ํƒ„

1ํƒ„

9 min read

์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šธ ๊ฒƒ - Next.js

Next.js๋Š” Vercel์‚ฌ๊ฐ€ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฆฌ์•กํŠธ ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

์ผ๋‹จ ์™„์ „ ๊ธฐ๋ณธ๋ถ€ํ„ฐ ์•Œ์•„๋ณด์ž.

์›นํŽ˜์ด์ง€์˜ ์ž‘๋™์›๋ฆฌ

์šฐ๋ฆฌ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋กœ ์–ด๋–ค ์›น์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ”๋‹ค๊ณ  ํ•˜์ž. ์ด๋•Œ ์šฐ๋ฆฌ์˜ ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๋Š” ์–ด๋–ค์‹์œผ๋กœ ์ž‘๋™ํ•ด ์šฐ๋ฆฌ์—๊ฒŒ ์›นํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฑธ๊นŒ?

์ด๋ฅผ ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ํŠน์ • URL์„ ์š”์ฒญ
  2. ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐ›๊ณ  ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ๋ ค์ฃผ๋ฉด ๋  ์ง€ ์ƒ๊ฐํ•จ
  3. ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ๋ ค์คŒ
  4. ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ ์ƒ์˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฅผ ๋ Œ๋”๋งํ•จ

์ด๋•Œ, ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฅผ HTML์˜ ํ˜•์‹์œผ๋กœ ๋Œ๋ ค์ค€๋‹ค. ์ด์ œ ๋จผ์ € HTML์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

๋ชจ๋“  ์›นํŽ˜์ด์ง€๋Š” HTML, CSS, JS๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋œ๋‹ค.

HTML์€ ๊ธฐ๋ณธ์ ์ธ ๋ ˆ์ด์•„์›ƒ์„ ์ •ํ•˜๊ณ , ๋ชจ๋“  Element(์š”์†Œ)๋ฅผ ๊ธฐ์ˆ ํ•œ๋‹ค. ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๊ฐ <...>์™€ <.../>์˜ ๋Œ€์‘์ด ํ•˜๋‚˜์˜ ์š”์†Œ๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ฒ ๋‹ค.

<!Doctype HTML>
<html>
	
	<head>
		...
	</head>
	
	<body>
		...
	</body>

</html>

head ์š”์†Œ๋Š” ์›น์‚ฌ์ดํŠธ์˜ ์ œ๋ชฉ, ํฌ๊ธฐ, ๋“ฑ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ˆ ํ•œ๋‹ค.

์ผ๋‹จ์€ body ์š”์†Œ์— ์ง‘์ค‘ํ•˜์ž.

body ์š”์†Œ์—๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ๋ชจ๋“  ์š”์†Œ๋“ค์„ ๊ธฐ์ˆ ํ•˜๋Š” ๊ณณ์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ์ข‹๋‹ค.

~~(Note. body๋ฐ–์— ์š”์†Œ๋ฅผ ๋†“๋Š”๋‹ค ํ•ด๋„ ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฅผ ๋ณด์—ฌ์ฃผ๊ธด ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ผ๋‹จ ์ •์„์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•˜๋Š”๊ฒŒ ์ข‹์œผ๋ฏ€๋กœ ๊ทธ๋ƒฅ body์— ์ค‘์š”ํ•œ ๊ฒƒ๋“ค์€ ๋‹ค ๋„ฃ๋Š”๋‹ค ์ƒ๊ฐํ•˜์ž.)~~

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ HTML์˜ ๋‹ค์–‘ํ•œ ์š”์†Œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

HTML์˜ ๋‹ค์–‘ํ•œ ์š”์†Œ

1. div

์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ์š”์†Œ์ด๋‹ค. ๊ฐ€์žฅ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

2. img

์ด๋ฏธ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ฒŒ ํ•˜๋Š” ์š”์†Œ์ด๋‹ค. ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

	<img src="์ด๋ฏธ์ง€URL" />	

img๋Š” Self closing tag๋ผ์„œ ๋‹ค๋ฅธ ์š”์†Œ๋“ค๊ณผ ๋‹ฌ๋ฆฌ ์Šฌ๋ž˜์‹œ๊ฐ€ ์•ž ๋ถ€๋ถ„์— ๋ถ™๋Š”๋‹ค. ๊ทธ๋ƒฅ img ์•ˆ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋„ฃ์„ ์ˆ˜ ์—†์–ด์„œ ๊ทธ๋ ‡๋‹ค ์ƒ๊ฐํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž.

3. button

์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋ฒ„ํŠผ์ด๋‹ค. ๋ˆ„๋ฅด๋ฉด ์–ด๋–ค ๋™์ž‘์„ ์‹คํ–‰ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋ถ€๋ถ„์€ ๋‹ค์Œ Chapter์—์„œ ์•Œ์•„๋ณด๊ธฐ๋กœ ํ•˜์ž.

	<button onclick ="...">๋‚จํ›ˆ์ด ๋จธ๋ฆฌ ๋•Œ๋ฆฌ๊ธฐ</button>

4. anchor (a)

์ด๋ฆ„์„ ๋ณด๋ฉด ๋ญ”์ง€ ์ž˜ ๋ชจ๋ฅผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ํŽ˜์ด์ง€๊ฐ„ ๋งํฌ๋ฅผ ๋งŒ๋“œ๋Š” ์š”์†Œ์ด๋‹ค. ํ•œ ์›น์‚ฌ์ดํŠธ ๋‚ด์˜ ํŽ˜์ด์ง€๋กœ ๊ฐ€๋Š” ๊ฒƒ ์ผ์ˆ˜๋„ ์žˆ๊ณ , ์™ธ๋ถ€ ์›นํŽ˜์ด์ง€์˜ ๋งํฌ๋กœ ๊ฐ€๋Š” ๊ฒƒ ์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

	<a onclick ="๋งํฌ123">๋‹จ๋Œ€์†Œ๊ณ  ๋งˆ์ด๋„ˆ๊ฐค๋Ÿฌ๋ฆฌ๋กœ ๊ฐ€๊ธฐ</a>

span

์ธ๋ผ์ธ์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ๋ณด์—ฌ์ค„ ๋•Œ ์“ด๋‹ค. ๊ทธ๋ƒฅ ํ…์ŠคํŠธ ๋ณด์—ฌ์ฃผ๋Š” ์š”์†Œ๋ผ ์ƒ๊ฐํ•˜์ž.

์ฐธ๊ณ ๋กœ ์ €๋ ‡๊ฒŒ ํ•œ์ค„์— ์ ์–ด๋„ ๋˜๊ณ ,

์ด๋ ‡๊ฒŒ ์ ์–ด๋„ ๋ธŒ๋ผ์šฐ์ €๋Š” ์ž˜ ์•Œ์•„๋“ฃ๋Š”๋‹ค.

	<a onclick ="๋งํฌ123">
	๋‹จ๋Œ€์†Œ๊ณ  ๋งˆ์ด๋„ˆ๊ฐค๋Ÿฌ๋ฆฌ๋กœ ๊ฐ€๊ธฐ</a>

์‹ฌ์ง€์–ด ์ด๋ ‡๊ฒŒ ์ ์–ด๋„ ์•Œ์•„๋“ฃ๋Š”๋‹ค.

	<a 
	onclick ="๋งํฌ123"
	>๋‹จ๋Œ€์†Œ๊ณ  ๋งˆ์ด๋„ˆ๊ฐค๋Ÿฌ๋ฆฌ๋กœ ๊ฐ€๊ธฐ</
	a>

HTML์˜ ํŠน์ง•

1. ์š”์†Œ๋ฅผ ๋„ค์ŠคํŒ… ํ•  ์ˆ˜ ์žˆ๋‹ค.

	<div>
		<div>๋‚จํ›ˆ์ด๋ฐ”๋ณด</div>
		
		<div>
			<div>
				<div>
					<button> 
						๋‚จํ›ˆ์ด ๋•Œ๋ฆฌ๊ธฐ
					</button>
				</div>
			</div>
		</div>
	<div>
	

2. ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์Šคํƒ€์ผ๋ง์ด ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค.

CSS๋กœ ์Šคํƒ€์ผ๋ง์„ ํ•˜๋Š”๊ฑฐ์ž„

3. HTML๋งŒ์œผ๋กœ ์ž‘์„ฑํ•œ ์›น์‚ฌ์ดํŠธ๋Š” ๋ณ„๋กœ ์“ธ๋ชจ๊ฐ€ ์—†๋‹ค.

์ˆœ์ˆ˜ํ•œ ์ •๋ณด์ œ๊ณต์˜ ๋ชฉ์ ๋งŒ ๋‹ฌ์„ฑํ• ๋ฟ, ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค.

๋‹ค์Œ์œผ๋กœ CSS์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

CSS๊ฐ€ ๋ญ์—์š”??

์šฐ๋ฆฌ๋Š” CSS๋ผ๋Š” ์–ธ์–ด๋ฅผ ์ด์šฉํ•ด์„œ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ด์˜๊ฒŒ ์Šคํƒ€์ผ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„์˜ ๋‚ด์šฉ์„ ์ž˜ ์ฝ์—ˆ๋‹ค๋ฉด(๊ทธ๋žฌ๊ธฐ๋ฅผ ๋ฐ”๋ผ์š”), ์„œ๋ฒ„๊ฐ€ HTML์˜ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•  ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด CSS๋Š” ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌ๋ ๊นŒ?

์ด์— ๋Œ€ํ•œ ๋‹ต์€ head ์š”์†Œ ์•ˆ์— ์žˆ๋‹ค.

์•ž์„œ ์šฐ๋ฆฐ head์— ์ œ๋ชฉ๊ณผ ๊ฐ™์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค๊ณ  ๋ฐฐ์› ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ค‘์—๋Š” ์›น์‚ฌ์ดํŠธ์— ํ•„์š”ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ด๋‚˜ CSSํŒŒ์ผ๋„ ํฌํ•จ๋œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด, ์šฐ๋ฆฌ ์›น์‚ฌ์ดํŠธ์— babo.css๋ผ๋Š” ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด,

<head>
	  
	<linkย rel="stylesheet"ย href="babo.css" />

	...
	
</head>

๊ฐ™์ด ์“ฐ๋ฉด ๋œ๋‹ค.

์ด๋Ÿฌ๋ฉด, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ํŒŒ์ผ์„ ๋ฐ›์ž ๋งˆ์ž CSSํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋ผ ์•Œ์•„์„œ /babo.css ํŒŒ์ผ๋„ ์š”์ฒญํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

๋˜ํ•œ, ๊ธฐ๋ณธ์ ์ธ ์Šคํƒ€์ผ๋ง์€ HTMLํŒŒ์ผ ์ƒ์—์„œ styleํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค.

<style>

.large {
	font-size: 60px;
}

</style>

CSS ๋ฌธ๋ฒ•

๋Œ€์ถฉ๋งŒ ๋ฐฐ์›Œ๋„ ๋  ๊ฒƒ ๊ฐ™๋‹ค.

CSS ๋ฌธ๋ฒ•์€ ์ธํ„ฐ๋„ท์— ์ฐพ์•„๋ณด๊ฑฐ๋‚˜ ์ฑ—๋ด‡์—๊ฒŒ ๋ฌผ์–ด๋ณด๋ฉด ๊ธˆ๋ฐฉ ์•Œ ์ˆ˜ ์žˆ๊ณ , ๋งŽ์ด ๋ณด๋‹ค ๋ณด๋ฉด ์ž๋™์œผ๋กœ ์™ธ์›Œ์ง„๋‹ค.

// babo.css

#babo {
	font-size: 120px;
	color: red;
}

.namhoon {
	font-size: 60px;
	color: #0000FF;
}

a {
	color: pink;
}


//index.html (์•ˆ์ค‘์š”ํ•œ๊ฑด์ƒ๋žตํ•จ)
<head>  
	<linkย rel="stylesheet"ย href="babo.css" />
</head>

<body>

	<span class="namhoon">๊น€๋‚จํ›ˆ</span>
	<span class="namhoon">๊น€๋‚จํ›ˆ</span>
	<span class="namhoon">๊น€๋‚จํ›ˆ</span>
	<span class="namhoon">๊น€๋‚จํ›ˆ</span>
	
	
	<div id="babo">
		๋ฐ”๋ณด
	</div>
	

	<a href="https://m.dcinside.com/board/dksw">
		๋‹จ๋Œ€์†Œ๊ณ ๋งˆ์ด๋„ˆ๊ฐค๋Ÿฌ๋ฆฌ
	</a>
	
	
	<button>
		๋•Œ๋ฆฌ๊ธฐ
	</button>

</body>

์œ„์˜ CSSํŒŒ์ผ์„ ๋ณด๋ฉด

#, .(๋งˆ์นจํ‘œ)์˜ ๊ธฐํ˜ธ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ˆˆ์น˜ ๋น ๋ฅธ ๋ถ„๋“ค์€ # ๊ฐ€ id๋ฅผ ์˜๋ฏธํ•˜๊ณ , .(๋งˆ์นจํ‘œ)๋Š” class๋ฅผ ๊ฐ€๋ฆฌํ‚จ ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์„ ์ˆ˜๋„ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด classํ•˜๊ณ  id๋Š” ๋ฌด์—‡์ด ๋‹ค๋ฅผ๊นŒ?

๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฐจ์ด๋Š” id๋Š” ์›นํŽ˜์ด์ง€์ƒ ํ•˜๋‚˜๋ฐ–์— ์—†๋Š” ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ ์“ฐ๊ณ , class๋Š” ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉ๋˜๋Š” ์Šคํƒ€์ผ์„ ์ •์˜ํ•  ๋–„ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์— ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰์˜ a๋Š” ๋ชจ๋“  anchor ์š”์†Œ์— ์ ์šฉ๋˜๋Š” ์Šคํƒ€์ผ์„ ์ •์˜ํ•œ๋‹ค.

์ค‘๊ฐ„ ์ •๋ฆฌํ•˜๊ธฐ

์˜ค๋Š˜ ๋งŽ์€ ๊ฒƒ์„ ์งง์€ ์‹œ๊ฐ„์•ˆ์— ๋ฐฐ์› ๋‹ค. ์ด๋ฅผ ๋ณต์Šตํ•ด๋ณด๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ O/X ๋ฌธ์ œ๋ฅผ ์ค€๋น„ํ•ด๋ดค๋‹ค.

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์›นํŽ˜์ด์ง€๋ฅผ ์ ‘์†ํ•  ๋•Œ, ์›น ์„œ๋ฒ„๋Š” ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ HTML, CSS, JS ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๋ฐ˜ํ™˜ํ•œ๋‹ค. (O/X)
  2. CSS๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ์Šคํƒ€์ผ ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. (O/X)
  3. class๋Š” ์›น์‚ฌ์ดํŠธ์ƒ์— ํ•œ๋ฒˆ๋งŒ ํ‘œ์‹œ๋˜๋Š” ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋‹ค (O/X)

์—ฌ๊ธฐ์„œ ๋ณด์ž 2ํƒ„์œผ๋กœ๊ฐ‘์‹œ๋‹ค

2ํƒ„


Links to this note

2ํƒ„

1ํƒ„ **