Jieunny์˜ ๋ธ”๋กœ๊ทธ

S4) Unit 8. [์ตœ์ ํ™”]์ตœ์ ํ™” ๊ธฐ๋ฒ• ๋ณธ๋ฌธ

CodeStates/learning contents

S4) Unit 8. [์ตœ์ ํ™”]์ตœ์ ํ™” ๊ธฐ๋ฒ•

Jieunny 2023. 3. 30. 12:00

๐Ÿ“ฃ  ์ตœ์ ํ™”(Optimization)

๐Ÿญ. ์ตœ์ ํ™”์˜ ๊ฐœ๋…

โœ”๏ธ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์œผ๋กœ ์ตœ๋Œ€ ํšจ์œจ์„ ๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ

โžฐ ์ปดํ“จํ„ฐ ๊ณตํ•™์—์„œ์˜ ์ตœ์ ํ™”๋Š” ๊ฐ€๋Šฅํ•œ ์ ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋ชจํ•˜๋ฉด์„œ ๊ฐ€๋Šฅํ•œ ํ•œ ๋น ๋ฅด๊ฒŒ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

โžฐ ์›น ๊ฐœ๋ฐœ์—์„œ์˜ ์ตœ์ ํ™”๋Š” ๋ฐ”๋กœ ์ฃผ์–ด์ง„ ์กฐ๊ฑด ์•„๋ž˜์—์„œ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ํ™”๋ฉด์„ ํ‘œ์‹œํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ

โžฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐ™์€ ์›๋ฆฌ => ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์กฐ๊ธˆ์ด๋ผ๋„ ๋œ ์†Œ๋ชจํ•˜๊ฑฐ๋‚˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋” ์ ์€ ์ฝ”๋“œ๊ฐ€ ๋” ํšจ์œจ์ ์ด๊ณ  ์ตœ์ ํ™”๋œ ์ฝ”๋“œ

 

๐Ÿฎ. ์ตœ์ ํ™”์˜ ํ•„์š”์„ฑ ๋ฐ ํšจ๊ณผ

1๏ธโƒฃ ์ดํƒˆ๋ฅ  ๊ฐ์†Œ

โœ”๏ธ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์ด ๋Š๋ ค์„œ ์ดํƒˆํ•˜๋Š” ์‚ฌ์šฉ์ž(์ดํƒˆ๋ฅ )๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

2๏ธโƒฃ ์ „ํ™˜์œจ ์ฆ๊ฐ€

โœ”๏ธ ์ดํƒˆ๋ฅ ์ด ์ค„์–ด๋“ค๋ฉด, ์ „ํ™˜์œจ์ด ๋†’์•„์งˆ ํ™•๋ฅ ๋„ ์ปค์ง„๋‹ค.

โžฐ ์ „ํ™˜์œจ : ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•œ ์‚ฌ์šฉ์ž ์ค‘ ํšŒ์›๊ฐ€์ž…, ์ƒํ’ˆ ๊ตฌ๋งค, ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ, ๋‹ค์šด๋กœ๋“œ ๋“ฑ์˜ ํ–‰์œ„๋ฅผ ํ•œ ๋ฐฉ๋ฌธ์ž์˜ ๋น„์œจ

 

3๏ธโƒฃ ์ˆ˜์ต ์ฆ๋Œ€

โœ”๏ธ ํƒˆ๋ฅ  ๊ฐ์†Œ, ์ „ํ™˜์œจ ์ฆ๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ ์ฆ๋Œ€ ๋ฐ ํšŒ์› ์ˆ˜ ์ฆ๊ฐ€๋กœ ์ด์–ด์ง€๊ณ , ์ด๋Š” ๊ณง ์ˆ˜์ต ์ฆ๋Œ€๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

4๏ธโƒฃ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ํ–ฅ์ƒ

โœ”๏ธ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์ด ๋น ๋ฅผ์ˆ˜๋ก UX๋Š” ํ–ฅ์ƒ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ํŽ˜์ด์ง€ ๋กœ๋“œ ์†๋„๊ฐ€ ๋น ๋ฅธ ํŽธ์ด๋ผ๊ณ  ํ•ด๋„ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด UX๊ฐ€ ๋”์šฑ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ“ฃ  HTML, CSS ์ตœ์ ํ™”ํ•˜๊ธฐ

โœ”๏ธ DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๋ฅผ ๊ฒฐํ•ฉํ•ด์„œ ๋ Œ๋”๋งํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๋ฆฌ๋ Œ๋”๋ง์‹œ ํŠธ๋ฆฌ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ๋ณต์žกํ• ์ˆ˜๋ก ๋” ๋งŽ์€ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋ Œ๋”๋ง์— ์†Œ๋ชจ๋˜๋Š” ์‹œ๊ฐ„๋„ ๊ธธ์–ด์ง„๋‹ค => HTML, CSS ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•จ์œผ๋กœ์จ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿญ. HTML ์ตœ์ ํ™” ๋ฐฉ๋ฒ•

1๏ธโƒฃ DOM ํŠธ๋ฆฌ ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“ค๊ธฐ

โœ”๏ธ DOM ํŠธ๋ฆฌ๊ฐ€ ๊นŠ์„์ˆ˜๋ก, ์ž์‹ ์š”์†Œ๊ฐ€ ๋งŽ์„์ˆ˜๋ก DOM ํŠธ๋ฆฌ์˜ ๋ณต์žก๋„๋Š” ์ปค์ง„๋‹ค.

โžฐ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊นŠ์ด๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์š”์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์‚ญ์ œํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.

// ์ˆ˜์ • ์ „
<div>
	<ol>
		<li> ์ฒซ ๋ฒˆ์งธ </li>
		<li> ๋‘ ๋ฒˆ์งธ </li>
		<li> ์„ธ ๋ฒˆ์งธ </li>
	</ol>
</div>

// ์ˆ˜์ • ํ›„ : ๋ถˆํ•„์š”ํ•œ div ์š”์†Œ ์ œ๊ฑฐ
<ol>
	<li> ์ฒซ ๋ฒˆ์งธ </li>
	<li> ๋‘ ๋ฒˆ์งธ </li>
	<li> ์„ธ ๋ฒˆ์งธ </li>
</ol>

 

2๏ธโƒฃ ์ธ๋ผ์ธ ์Šคํƒ€์ผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ

โœ”๏ธ ํด๋ž˜์Šค๋กœ ๋ฌถ์–ด์„œ ํ•œ ๋ฒˆ์— ์ž‘์„ฑํ•ด๋„ ๋  ์Šคํƒ€์ผ ์†์„ฑ์„ ์ค‘๋ณต์œผ๋กœ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒจ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ค‘๋ณต์ด ์ƒ๊ธด๋‹ค.

โžฐ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ค‘๋ณต์€ ๊ฐ€๋…์„ฑ์„ ๋–จ์–ด๋œจ๋ฆด ๋ฟ ์•„๋‹ˆ๋ผ ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

โžฐ ์ธ๋ผ์ธ ์Šคํƒ€์ผ์€ ๋ฆฌํ”Œ๋กœ์šฐ๋ฅผ ๊ณ„์†ํ•ด์„œ ๋ฐœ์ƒ์‹œ์ผœ ๋ Œ๋”๋ง ์™„๋ฃŒ ์‹œ์ ์„ ๋Šฆ์ถ˜๋‹ค.

//์ˆ˜์ • ์ „
<div style="margin: 10px;"> ๋งˆ์ง„ 10px </div>
<div style="margin: 10px;"> ์ด๊ฒƒ๋„ ๋งˆ์ง„ 10px </div>

//์ˆ˜์ • ํ›„ : class์™€ CSS๋กœ ๋Œ€์ฒด
<div class="margin10"> ๋งˆ์ง„ 10px </div>
<div class="margin10"> ์ด๊ฒƒ๋„ ๋งˆ์ง„ 10px </div>

.margin10 {
	margin: 10px;
}

 

๐Ÿฎ. CSS ์ตœ์ ํ™” ๋ฐฉ๋ฒ•

1๏ธโƒฃ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” CSS ์ œ๊ฑฐํ•˜๊ธฐ

โœ”๏ธ ๋ถˆํ•„์š”ํ•œ CSS ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด CSSOM ํŠธ๋ฆฌ์˜ ์™„์„ฑ์ด ๋Šฆ์–ด์ง„๋‹ค.

โžฐ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•  ์ผ์ด ์ƒ๊ธฐ๋ฉด, CSS ์ฝ”๋“œ๋งŒ ๋‚จ์ง€๋Š” ์•Š๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ํ•จ๊ป˜ ์‚ญ์ œํ•˜์ž.

 

2๏ธโƒฃ ๊ฐ„๊ฒฐํ•œ ์…€๋ ‰ํ„ฐ ์‚ฌ์šฉํ•˜๊ธฐ

โœ”๏ธ ์…€๋ ‰ํ„ฐ๊ฐ€ ๋ณต์žกํ• ์ˆ˜๋ก ์Šคํƒ€์ผ ๊ณ„์‚ฐ๊ณผ ๋ ˆ์ด์•„์›ƒ์— ์‹œ๊ฐ„์„ ๋” ๋งŽ์ด ์†Œ๋ชจํ•˜๊ฒŒ ๋œ๋‹ค.

// ๋ณต์žกํ•œ CSS ์…€๋ ‰ํ„ฐ ์˜ˆ์‹œ
.cart_page .cart_item #firstItem { ... }

// ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ์–ด์ฉ” ์ˆ˜ ์—†์ง€๋งŒ, ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•ด์ค๋‹ˆ๋‹ค.
.cart_item { ... }

๐Ÿ“ฃ  ๋ฆฌ์†Œ์Šค ๋กœ๋”ฉ ์ตœ์ ํ™”ํ•˜๊ธฐ

โœ”๏ธ <script> ์š”์†Œ์™€ <link> ์š”์†Œ๋ฅผ ์–ด๋””์„œ ๋ถˆ๋Ÿฌ์˜ค๋Š”์ง€ ์œ„์น˜์— ๋”ฐ๋ผ ๋ Œ๋”๋ง ์™„๋ฃŒ ์‹œ์ ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

1๏ธโƒฃ CSS ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

โœ”๏ธ CSSOM ํŠธ๋ฆฌ๋Š” CSS ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ํ•ด์„ํ•ด์•ผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— CSSOM ํŠธ๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•œ ๋น ๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก HTML ๋ฌธ์„œ ์ตœ์ƒ๋‹จ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

// CSS ํŒŒ์ผ์€ HTML ํŒŒ์ผ ์ƒ๋‹จ์˜ head ์š”์†Œ ์•ˆ์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
<head>
	<link href="style.css" rel="stylesheet" />
</head>

 

2๏ธโƒฃ JavaScript ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

โœ”๏ธ JavaScript ํŒŒ์ผ์€ DOM ํŠธ๋ฆฌ ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋Š” ์‹œ์ ์ธ HTML ๋ฌธ์„œ ์ตœํ•˜๋‹จ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

โžฐ HTML ์ฝ”๋“œ ํŒŒ์‹ฑ ์ค‘์— <script> ์š”์†Œ๋ฅผ ๋งŒ๋‚˜๋Š” ์ˆœ๊ฐ„ ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ, <script> ์š”์†Œ ์ด์ „๊นŒ์ง€ ์ƒ์„ฑ๋œ DOM๊นŒ์ง€๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. => <script> ์š”์†Œ๋ฅผ HTML ์ฝ”๋“œ ์ค‘๊ฐ„์— ๋„ฃ๋Š”๋‹ค๋ฉด, ํ•ด๋‹น ์š”์†Œ ์ดํ›„์— ์ƒ์„ฑ๋  DOM์„ ์ˆ˜์ •ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ํ™”๋ฉด์ด ์˜๋„ํ•œ ๋Œ€๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.

โžฐ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ DOM ํŠธ๋ฆฌ ์ƒ์„ฑ์ด ์ค‘๋‹จ๋˜๋ฉฐ, JavaScript ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์šด๋กœ๋“œ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ DOM ํŠธ๋ฆฌ ์ƒ์„ฑ์ด ์ค‘๋‹จ๋œ๋‹ค => DOM ํŠธ๋ฆฌ ์ƒ์„ฑ์ด ์ค‘๋‹จ๋œ ์‹œ๊ฐ„๋งŒํผ ๋ Œ๋”๋ง ์™„๋ฃŒ ์‹œ๊ฐ„์€ ๋Šฆ์ถฐ์ง€๊ฒŒ ๋œ๋‹ค.

<body>
	<div>...</div>
	...

	// JavsScript ํŒŒ์ผ์€ body ์š”์†Œ๊ฐ€ ๋‹ซํžˆ๊ธฐ ์ง์ „์— ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. 
	<script src="script.js" type="text/javascript"></script>
</body>

๐Ÿ“ฃ  ๋ธŒ๋ผ์šฐ์ € ์ด๋ฏธ์ง€ ์ตœ์ ํ™”ํ•˜๊ธฐ

โœ”๏ธ ํŽ˜์ด์ง€์˜ ๋Œ€๋ถ€๋ถ„์˜ ์šฉ๋Ÿ‰์€ HTML/CSS/JS์™€ ๊ฐ™์€ ์ฝ”๋“œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ์ด๋ฏธ์ง€ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋ฏธ๋””์–ด ํŒŒ์ผ์ด ์ฐจ์ง€ํ•œ๋‹ค.

โžฐ ์ด๋ฏธ์ง€์˜ ์šฉ๋Ÿ‰์„ ์ค„์ด๊ฑฐ๋‚˜ ์š”์ฒญ์˜ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์„ ์šฐ์„ ์ ์œผ๋กœ ๊ณ ๋ คํ•  ์‹œ, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿญ. ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ

โœ”๏ธ ์›น ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์„œ๋ฒ„ ์š”์ฒญ ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•

โžฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ชจ์•„ ํ•˜๋‚˜์˜ ์Šคํ”„๋ผ์ดํŠธ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ณ  CSS์˜ background-position ์†์„ฑ์„ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€์˜ ์ผ์ • ๋ถ€๋ถ„๋งŒ ํด๋ž˜์Šค ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

naver์˜ ์Šคํ”„๋ผ์ดํŠธ ์ด๋ฏธ์ง€

โžฐ ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋กœ ์‚ฌ์šฉํ•˜๋˜, ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์— ๋งž์ถฐ width, height, background-position ์†์„ฑ์„ ์ฃผ์–ด ์•„์ด์ฝ˜์„ ๋งŒ๋“ ๋‹ค.

โžฐ ๋„คํŠธ์›Œํฌ ๋กœ๋”ฉ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

๐Ÿฎ. ์•„์ด์ฝ˜ ํฐํŠธ ์‚ฌ์šฉํ•˜๊ธฐ

โœ”๏ธ ๋ชจ๋“  ์•„์ด์ฝ˜์„ ์ด๋ฏธ์ง€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•„์ด์ฝ˜ ํฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šฉ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

โžฐ Font Awesome

 

1๏ธโƒฃ CDN์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

(1) Font Awesome์— ๊ฐ€์ž…ํ•˜๋ฉด ํ‚คํŠธ๋ฅผ ๋ฐœ๊ธ‰ํ•ด์ฃผ๋Š”๋ฐ, ์ด ํ‚คํŠธ๋ฅผ HTML ํŒŒ์ผ์—์„œ <head> ์š”์†Œ์— ๋„ฃ์–ด์ค€๋‹ค.

(2) Font Awesome ์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ์•„์ด์ฝ˜์„ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ(HTML, React, Vue)์— ๋งž๋Š” ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ๋ถ™์—ฌ๋„ฃ๊ธฐ

<i class="fa-solid fa-face-laugh-beam">

 

2๏ธโƒฃ Font Awesome ๋ชจ๋“ˆ ์„ค์น˜ํ•˜๊ธฐ

(1) ํŒจํ‚ค์ง€ ์„ค์น˜ํ•˜๊ธฐ

// ํ•ต์‹ฌ ํŒจํ‚ค์ง€ ์„ค์น˜
npm i --save @fortawesome/fontawesome-svg-core

// ์•„์ด์ฝ˜ ํŒจํ‚ค์ง€ ์„ค์น˜ (ํ•ด๋‹น ์ฝ”๋“œ๋Š” ๋ฌด๋ฃŒ ์•„์ด์ฝ˜๋“ค์ž…๋‹ˆ๋‹ค. ์œ ๋ฃŒ ์•„์ด์ฝ˜์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ถ”๊ฐ€๋กœ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.)
npm i --save @fortawesome/free-solid-svg-icons
npm i --save @fortawesome/free-regular-svg-icons
npm i --save @fortawesome/free-brands-svg-icons

// Font Awesome React ๊ตฌ์„ฑ ์š”์†Œ ์„ค์น˜
npm i --save @fortawesome/react-fontawesome@latest

 (2) Font Awesome ์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ์•„์ด์ฝ˜์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ ํ›„์—, ์•Œ๋งž๊ฒŒ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๊ธฐ

    ใ„ด ์•„์ด์ฝ˜ ์ด๋ฆ„์€ camelCase๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

<i class="fa-brands fa-react"></i>

 

๐Ÿฏ. WebP ๋˜๋Š” AVIF ์ด๋ฏธ์ง€ ํฌ๋งท ์‚ฌ์šฉํ•˜๊ธฐ

โœ”๏ธ WebP๋Š” PNG์™€ ๋น„๊ตํ•ด 26% ์šฉ๋Ÿ‰์ด ๊ฐ์†Œ๋˜๋ฉฐ JPEG์™€ ๋น„๊ตํ–ˆ์„ ๋• 25-35% ๋” ๊ฐ์†Œ๋œ๋‹ค.

โœ”๏ธ  AVIF๋Š” JPEG์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ๋ฌด๋ ค ์šฉ๋Ÿ‰์˜ 50%๊ฐ€ ๊ฐ์†Œ๋˜๋ฉฐ WebP์™€ ๋น„๊ตํ–ˆ์„ ๋• 20% ๊ฐ์†Œ๋œ๋‹ค.

โžฐ ์ตœ๊ทผ์— ๋“ฑ์žฅํ•œ ์ด๋ฏธ์ง€ ํฌ๋งท์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ˜ธํ™˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

    ใ„ด HTML์˜ <picture> ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ ๋ธŒ๋ผ์šฐ์ €์˜ ํ˜ธํ™˜์— ๋งž๋„๋ก ๋ถ„๊ธฐ๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.

    ใ„ด <picture> : img ์š”์†Œ์˜ ๋‹ค์ค‘ ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค(multiple image resources)๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ

<picture>
  <source srcset="logo.webp" type="image/webp">
  <img src="logo.png" alt="logo">
</picture>

// ๋งŒ์•ฝ ์ ‘์†ํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ <source>ํƒœ๊ทธ ๋‚ด์˜ srcset์— ์ •์˜ํ•œ WebP ํฌ๋งท์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ด๋‹น <source> ํƒœ๊ทธ๋Š” ๋ฌด์‹œ

๐Ÿ“ฃ  CDN ์‚ฌ์šฉํ•˜๊ธฐ

โœ”๏ธ ์œ ์ €๊ฐ€ ๊ฐ€๊นŒ์šด ๊ณณ์— ์œ„์น˜ํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ(์„œ๋ฒ„)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

โžฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋‹ฌ๋˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์ณ์•ผํ•˜๋Š” ์„œ๋ฒ„์˜ ๊ฐฏ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ์ค„๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค.