์ฑ„๋„ํ†ก ์•„์ด์ฝ˜
BEST

[React / VanillaJS] UI ์š”์†Œ ์ง์ ‘ ๋งŒ๋“ค๊ธฐ Part 1

๋Œ€ํ‘œ์ ์ธ UI ์š”์†Œ๋“ค์„ React ๋ฒ„์ „ ๋ฐ ์ˆœ์ˆ˜ JavaScript ๋ฒ„์ „์œผ๋กœ ๋งŒ๋“ค์–ด ๋ณด๋ฉด์„œ, Web API๋ฅผ ํ™œ์šฉํ•œ ๋‹ค์–‘ํ•œ ๊ด€์ ๊ณผ ๋ฐฉ๋ฒ•์„ ๊ฒฝํ—˜ํ•˜๊ณ , ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์‹ค๋ ฅ์„ ํ•œ์ธต ๋Œ์–ด์˜ฌ๋ ค ๋ณด์„ธ์š”.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[ํ”„๋ก ํŠธ์—”๋“œ, ์›น ๊ฐœ๋ฐœ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • React ์‹ค๋ฌด ์ง€์‹

  • DOM API

  • ๊ทธ๋ฐ–์˜ ๋‹ค์–‘ํ•œ Web API ํ™œ์šฉ ๋Šฅ๋ ฅ

๐ŸŽ‰ ๋กœ๋“œ๋งต์„ ํ†ตํ•ด ์ˆ˜๊ฐ•์‹œ 25% ํ• ์ธ ๐ŸŽ‰

๋กœ๋“œ๋งต ๋งํฌ: https://inf.run/MJDa8

(์ด๋ฏธ ๋‘ ๊ฐ•์˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์ˆ˜๊ฐ•์ค‘์ธ ๊ฒฝ์šฐ์—๋„ ๋‚˜๋จธ์ง€ ๊ฐ•์˜์— ๋Œ€ํ•ด 25% ํ• ์ธ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.)

๋‹ค์–‘ํ•œ UI ์š”์†Œ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค!

์ˆœ์ˆ˜ JavaScript(vanilla-js) ๋ฒ„์ „๊ณผ React ๋ฒ„์ „์œผ๋กœ ๋งŒ๋“ค์–ด๋ณด๊ณ , ๊ฐ€๋Šฅํ•œ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์„ ๋„์ž…ํ•ด ๋ด…๋‹ˆ๋‹ค.

  • ๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ž‘์„ฑํ•˜๋ฉด์„œ ๊ฐ๊ฐ์˜ ํŠน์ง•์„ ๋น„๊ต ์ฒดํ—˜ํ•˜์„ธ์š”.


  • ํ˜„์—…์—์„œ ๋งŽ์ด ์“ฐ์ด๋Š” API๋“ค์„ ์ ์šฉํ•ด๋ณด๋ฉด์„œ ์‹ค๋ฌด ๊ฐ๊ฐ์„ ํ‚ค์›Œ๋ณด์„ธ์š”.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœํ•ด์š”


UI ์ปดํฌ๋„ŒํŠธ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋งŒ ์˜์กดํ•˜์—ฌ ๊ฐœ๋ฐœ ์ž์‹ ๊ฐ์ด ๋ถ€์กฑํ•œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

์ตœ์‹  HTML5 API ๋ฐ DOM API์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๋ถ„

UI ์ปดํฌ๋„ŒํŠธ ๊ฐœ๋ฐœ์‹ค๋ ฅ ํ–ฅ์ƒ์— ๋Œ€ํ•œ ๊ฐˆ์ฆ์„ ๋А๋ผ๋Š” ๋ถ„

์ˆ˜๊ฐ• ํ›„์—๋Š”

  • ์ด ๊ฐ•์˜ ํ•˜๋‚˜๋กœ UI ์š”์†Œ๋Š” ๋! UI ์š”์†Œ์— ๋Œ€ํ•ด์„œ ๋งŒํผ์€ ์‹œ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ˆ˜์ค€์˜ ๊ฐœ๋ฐœ ์ง€์‹์„ ์Œ“์œผ์‹ค ์ˆ˜ ์žˆ์–ด์š”.

  • ์ด ๊ฐ•์˜์—์„œ ๋‹ค๋ฃจ๋Š” ์š”์†Œ๋“ค์„ ์กฐํ•ฉ/๋ฐœ์ „์‹œํ‚ค๋ฉด, ์ƒˆ๋กœ์šด UI ์š”์†Œ๋“ค๋„ ์–ผ๋งˆ๋“ ์ง€ ์ง์ ‘ ์ž‘์„ฑํ•˜์‹ค ์ˆ˜ ์žˆ๋Š” ์ž์‹ ๊ฐ์ด ์ƒ๊น๋‹ˆ๋‹ค.


์ด๋Ÿฐ ๋‚ด์šฉ์„ ๋ฐฐ์›Œ์š”


Part 1 (๋ณธ ๊ฐ•์˜)

  1. ์•„์ฝ”๋””์–ธ

  2. ํƒญ๋ฉ”๋‰ด

  3. ํˆดํŒ

  4. ๋ฐ˜์‘ํ˜• ํ…์ŠคํŠธ๋ฐ•์Šค

  5. ์—ฌ๋Ÿฌ์ค„ ๋ง์ค„์ž„

  6. ์ง€์—ฐ๋กœ๋”ฉ

  7. ๋ฌดํ•œ ์Šคํฌ๋กค

  8. ํšก ์Šคํฌ๋กค ๋ฐ•์Šค

  9. ์Šคํฌ๋กค ์ŠคํŒŒ์ด

Part 2 (5์›” ์˜คํ”ˆ ์˜ˆ์ •)

  1. ์Šค๋‚ต๋ฐ”

  2. ๋ชจ๋‹ฌ

  3. ํŒ์˜ค๋ฒ„

  4. ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ

  5. ์บ๋Ÿฌ์…€

  6. ๊ฐค๋Ÿฌ๋ฆฌ

  7. ์…€๋ ‰ํŠธ ๋ฐ•์Šค

  8. ์ž๋™ ์™„์„ฑ

  9. ๋“œ๋ž˜๊ทธ์•ค๋“œ๋ž ๋ฆฌ์ŠคํŠธ

์ด ๊ฐ•์˜์˜ ํŠน์ง•


์ƒ์ƒํ•œ ๋ผ์ด๋ธŒ ์ฝ”๋”ฉ

์˜จ๋ผ์ธ ์Šคํ„ฐ๋””์—์„œ ์ง„ํ–‰ํ•œ ๋ผ์ด๋ธŒ ์ฝ”๋”ฉ์„ ๊ทธ๋Œ€๋กœ ๋…นํ™” / ํŽธ์ง‘ํ•œ ๊ฐ•์˜๋กœ ์ƒ์ƒํ•œ ํ˜„์žฅ๊ฐ๊ณผ ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ์„ ์žฅ์ ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ•ด์ง„ ํ‹€์— ๊ฐ‡ํžˆ์ง€ ์•Š์€ ๋‹ค์–‘ํ•œ ๊ด€์ ์„ ์ œ์‹œํ•ด ๋“œ๋ฆฌ๊ธฐ๋„ ํ•˜๊ณ , ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ๊ฒฝํ—˜ํ•ด๋ณด์‹ค ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹จ๊ณ„๋ณ„ ๋‚œ์ด๋„ ์กฐ์ •, ์ตœ์‹  API ์†Œ๊ฐœ ๋ฐ ์ ์šฉ

์š”๊ตฌ๋˜๋Š” ๊ธฐ์ˆ ์ด ๋น„์Šทํ•œ ์š”์†Œ๋“ค๋ผ๋ฆฌ ๋ฌถ๊ณ , ์ ์ฐจ ๋‚œ์ด๋„๊ฐ€ ๋‹จ๊ณ„๋ณ„๋กœ ์ƒ์Šนํ•˜๋„๋ก ๊ฐ•์˜๋ฅผ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ตœ์‹  HTML5 ๋ฐ DOM API๋“ค์„ ๋‘๋ฃจ ์†Œ๊ฐœ, ์ ์šฉํ•ด๋ณด๋ฉด์„œ ์ต์ˆ™ํ•ด์ง€๋Š” ๋ฐ์— ์ฃผ๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

๋‹ค์Œ ๊ฐ ๋ฒ„์ „ ํ˜น์€ ๊ทธ ์ด์ƒ์˜ ํ™˜๊ฒฝ์ด ๊ฐ–์ถ”์–ด์ ธ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • Node.js 16

  • React 18

  • Next.js 13

  • TypeScript 4


ํ•™์Šต ์ž๋ฃŒ

  • ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์••์ถ•ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • ๊ธฐ์ดˆ์ ์ธ HTML/CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•, ๋ฆฌ์•กํŠธ ๋ฌธ๋ฒ•์€ ์ˆ™์ง€ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ „์ œ ํ•˜์— ์ˆ˜์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • Next.js ๋ฐ TypeScript ๋“ฑ์€ ์ž‘์—… ํŽธ์˜์ƒ ๋„๊ตฌ๋กœ ํ™œ์šฉํ•˜์˜€์„ ๋ฟ์œผ๋กœ, ์ž์„ธํžˆ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ๋ณธ ๊ฐ•์˜๋Š” ์ง€์‹๊ณต์œ ์ž๊ฐ€ ์ง„ํ–‰ํ•œ ์Šคํ„ฐ๋””์˜ ๋…นํ™”, ํŽธ์ง‘ํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.


์ˆ˜๊ฐ•๊ธฐ๊ฐ„ ์ œํ•œ ์•ˆ๋‚ด

  • ๋ณธ ๊ฐ•์˜๋Š” ์ ์ ˆํ•œ ๊ธฐ๊ฐ„ ๋‚ด์˜ ํ•™์Šต์„ ์žฅ๋ คํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ์œผ๋กœ ์ˆ˜๊ฐ•๊ธฐ๊ฐ„์„ 1๋…„์œผ๋กœ ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ˆ˜๊ฐ•๊ธฐ๊ฐ„ ์ด๋‚ด์—๋งŒ ์ˆ˜๊ฐ• ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์€ ์•„๋‹™๋‹ˆ๋‹ค!


  • ๋ถ€๋“์ด ๊ธฐ๊ฐ„ ๋‚ด ์ˆ˜๊ฐ•์„ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•˜์…จ๊ฑฐ๋‚˜ ํ˜น์€ ๋‹ค์‹œ ๋“ฃ๊ณ  ์‹ถ์œผ์‹  ๊ฒฝ์šฐ, ์–ธ์ œ๋“ ์ง€ ์ด๋ฉ”์ผ๋กœ ์—ฐ๋ฝ ์ฃผ์„ธ์š”! ํ™•์ธ ์ฆ‰์‹œ ์—ฐ์žฅํ•ด ๋“œ๋ฆด๊ฒŒ์š”. (์ปค๋ฎค๋‹ˆํ‹ฐ ํƒญ์˜ ์ž์ฃผ๋ฌป๋Š”์งˆ๋ฌธ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”)

์ง€์‹๊ณต์œ ์ž์˜
๋‹ค๋ฅธ ๊ฐ•์˜๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด?

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ง€๋ง์ƒ

  • ํ”„๋ก ํŠธ์—”๋“œ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • HTML

  • CSS

  • JavaScript (ES6+)

  • React

  • TypeScript

์•ˆ๋…•ํ•˜์„ธ์š”
์ •์žฌ๋‚จ์ž…๋‹ˆ๋‹ค.

31,427

๋ช…

์ˆ˜๊ฐ•์ƒ

641

๊ฐœ

์ˆ˜๊ฐ•ํ‰

389

๊ฐœ

๋‹ต๋ณ€

4.9

์ 

๊ฐ•์˜ ํ‰์ 

11

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š”, ์‹œ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ •์žฌ๋‚จ ์ž…๋‹ˆ๋‹ค.
์„œ๋กœ ๋•๊ณ  ํ•จ๊ป˜ ๋ฐœ์ „ํ•˜๋Š” ๊ฑด์ „ํ•œ ๊ณต์œ ๋ฌธํ™”๋ฅผ ์ง€ํ–ฅํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํ™œ๋™์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์„œ: ์ฝ”์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

์œ ํŠœ๋ธŒ ์ฑ„๋„: FE์žฌ๋‚จ

์•„ํ‹ฐํด ๋ฐ ์ธํ„ฐ๋ทฐ ์˜์ƒ:

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

49๊ฐœ โˆ™ (12์‹œ๊ฐ„ 7๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

19๊ฐœ

5.0

19๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

์ •์žฌ๋‚จ๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

๋น„์Šทํ•œ ๊ฐ•์˜

๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

์—ฐ๊ด€ ๋กœ๋“œ๋งต

๊ฐ•์˜๊ฐ€ ํฌํ•จ๋œ ๋กœ๋“œ๋งต์œผ๋กœ ํ•™์Šตํ•ด ๋ณด์„ธ์š”!

โ‚ฉ48,510

30%

โ‚ฉ69,300