<aside> ๐Ÿ’ก This template provides context/instructions for the languages you use.

</aside>

๊ฐœ๋ฐœ ์•„ํ‚คํ…์ฒ˜(MVC, MVVM, MVW, etc.) ๋ชจ๋ธ ์ค‘, View๋งŒ ๋‹ค๋ฃจ๋Š” Javascript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ํ•ต์‹ฌ์ ์ธ ํŠน์ง•์€ ์–ด๋–ค ๋ฐ์ดํ„ฐ(์ƒํƒœ)๊ฐ€ ๋ณ€ํ•  ๋•Œ๋งˆ๋‹ค ์–ด๋–ค ๋ณ€ํ™”๋ฅผ ์ค„์ง€ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ทธ๋ƒฅ ๊ธฐ์กด View๋ฅผ ์ง€์šฐ๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์ƒˆ๋กœ ๋ Œ๋”๋ง ํ•œ๋‹ค๋Š” ๊ฒƒ.

1. React ์ดํ•ด

<aside> ๐Ÿ’ก **๋ฆฌ์•กํŠธ์˜ ์ฒ ํ•™ "**์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•ํ•˜๊ธฐ"

</aside>

๋ฆฌ์•กํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ ๋ฐ ์‚ฌ์šฉํ•˜๋ฉฐ, ์˜ค์ง View(๋ทฐ) ๋งŒ ์‹ ๊ฒฝ์“ฐ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๊ธฐ์กด๊ณผ ๋‹ค๋ฅด๊ฒŒ, ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€ํ•  ๋•Œ๋งˆ๋‹ค ์–ด๋–ค ๋ณ€ํ™”๋ฅผ ์ค„์ง€ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ทธ๋ƒฅ ๊ธฐ์กด ๋ทฐ๋ฅผ ๋‚ ๋ ค๋ฒ„๋ฆฌ๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์ƒˆ๋กœ ๋ Œ๋”๋ง(ํ™”๋ฉด์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ)ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ํŠน์ • ๋ถ€๋ถ„์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ธธ์ง€ ์ •ํ•˜๋Š” ์„ ์–ธ์ฒด๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋ฅผ **์ปดํฌ๋„ŒํŠธ(Componet)**๋ผ๊ณ  ํ•œ๋‹ค. ๋ฆฌ์•กํŠธ์˜ ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„ ์›Œํฌ๊ฐ€ ๋‹ค๋ฅด๋ฉฐ, ์ข€ ๋” ๋ณตํ•ฉ์ ์ธ ๊ฐœ๋…์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

[ํŠน์ง•#1] ์ปดํฌ๋„ŒํŠธ๋Š” ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ API๋กœ ์ˆ˜๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ปดํฌ๋„ŒํŠธ ํ•˜๋‚˜์—์„œ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๊น€์ƒˆ์™€ ์ž‘๋™ ๋ฐฉ์‹์„ ์ •์˜ํ•œ๋‹ค.

์‚ฌ์šฉ์ž ํ™”๋ฉด(์›น ๋ธŒ๋ผ์šฐ์ €)์— View(์›น ํŽ˜์ด์ง€)๋ฅผ ๋ณด์—ฌ ์ฃผ๋Š” ๊ฒƒ์„ **๋ Œ๋”๋ง(Rendering)**์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” ์ดˆ๊ธฐ ๋ Œ๋”๋ง๊ณผ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ ๊ฐ’(๋ฐ์ดํ„ฐ, Status) ๋ณ€๊ฒฝ์œผ๋กœ ๋‹ค์‹œ ๋ Œ๋”๋ง์ด ์‹คํ–‰๋˜๋Š” ๋ฆฌ ๋ Œ๋”๋ง(Re Rendering) ๊ฐœ๋…์ด ์กด์žฌํ•œ๋‹ค.

1.1 ์ดˆ๊ธฐ ๋ Œ๋”๋ง

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-02-19 แ„‹แ…ฉแ„’แ…ฎ 12.39.39.png

๋ฆฌ์•กํŠธ์—์„œ ์ดˆ๊ธฐ ๋ Œ๋”๋ง์€ render(){...} ํ•จ์ˆ˜๊ฐ€ ๊ฒฐ์ •ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์ •์˜ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” html ํ˜•์‹์˜ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ , View(๋ทฐ)๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ง€๋‹Œ ๊ฐ์ฒด(View์— ๋Œ€ํ•œ Meta์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด)๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๋˜ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋“ค์–ด ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ renderํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ทธ ๋‚ด๋ถ€์— ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค๋„ ์žฌ๊ท€์ ์œผ๋กœ ๋ Œ๋”๋ง ํ•œ๋‹ค.(์žฌ๊ท€์ ์œผ๋กœ ๋ Œ๋”๋ง ๋œ๋‹ค๋ผ๋Š” ์˜๋ฏธ๋Š” ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋ Œ๋”๋ง๋˜๊ณ  ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ Œ๋”๋ง ๋˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค.) ์ด๋ ‡๊ฒŒ ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์˜ ๋ Œ๋”๋ง ์ž‘์—…์ด ๋๋‚˜๋ฉด ์ง€๋‹ˆ๊ณ  ์žˆ๋Š” ์ •๋ณด๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ HTML ๋งˆํฌ์—…(markup)์„ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ์ •ํ•˜๋Š” ์‹ค์ œ ํŽ˜์ด์ง€์˜ DOM ์š”์†Œ ์•ˆ์— ์ฃผ์ž…ํ•œ๋‹ค.

๋ฆฌ์•กํŠธ์—์„œ ๋ Œ๋”๋ง์˜ ์ •ํ™•ํ•œ ์˜๋ฏธ๋Š” 3๊ฐ€์ง€๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์ง„๋‹ค.

์ฒซ๋ฒˆ์งธ, ๋ฆฌ์•กํŠธ๋กœ ์ •์˜ํ•œ ์ปดํฌ๋„ŒํŠธ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด(render ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด ๊ฐ’)

๋‘๋ฒˆ์งธ, ๋ฆฌํ„ด ๋ฐ›์€ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ(View์˜ ๊ตฌ์„ฑ์ •๋ณด)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ HTML๋งˆํฌ์—… ๊ตฌ์„ฑ - ์ปดํฌ๋„ŒํŠธ์— ์ •์˜๋œ View ์ •๋ณด๋ฅผ ์ด์šฉํ•ด์„œ HTML๋งˆํฌ์—…์„ ๊ตฌ์„ฑํ•œ๋‹ค.

์„ธ๋ฒˆ์งธ, ๊ตฌ์„ฑ๋œ HTML๋งˆํฌ์—…์„ ์‹ค์ œ ํŽ˜์ด์ง€์˜ DOM์š”์†Œ ์•ˆ์— ์ฃผ์ž…

์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹ค์ œ ํŽ˜์ด์ง€์— ๋ Œ๋”๋งํ•  ๋•Œ๋Š” ๋ถ„๋ฆฌ๋œ ๋‘ ๊ฐ€์ง€ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅธ๋‹ค. ์ฒซ๋ฒˆ์งธ, ๋ฌธ์ž์—ด ํ˜•ํƒœ์˜ HTML ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋‘๋ฒˆ์งธ, ํŠน์ • DOM์— ํ•ด๋‹น ๋‚ด์šฉ์„ ์ฃผ์ž…ํ•˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ์ ์šฉ๋œ๋‹ค.

1.2 ๋ฆฌ ๋ Œ๋”๋ง(์กฐํ™” ๊ณผ์ •)

๋ฆฌ์•กํŠธ์—์„œ View(ํ™”๋ฉด or HTML)๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋Š” "์—…๋ฐ์ดํŠธ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค." ๋ผ๊ณ  ํ•˜๊ธฐ๋ณด๋‹ค๋Š” "**์กฐํ™” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค."**๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ •ํ™•ํ•œ ํ‘œํ˜„์ด๋‹ค. ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ(์ง€์ •ํ•œ ๋ฐ์ดํ„ฐ) ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ ์šฐ๋ฆฌ ๋ณด๊ธฐ์—๋Š” ๋ณ€ํ™”์— ๋”ฐ๋ผ View๊ฐ€ ๋ณ€ํ˜•๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์‚ฌ์‹ค์€ ์ƒˆ๋กœ์šด ์š”์†Œ๋กœ DOM ์š”์†Œ ์ž์ฒด๋ฅผ ๊ฐˆ์•„ ๋ผ์šฐ๊ธฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.

์ด ์ž‘์—… ๋˜ํ•œ render ํ•จ์ˆ˜๊ฐ€ ๋งก์•„์„œ ์ˆ˜ํ–‰ํ•œ๋‹ค. render ํ•จ์ˆ˜๋Š” View๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง„(View์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.) ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒํƒœ(๋ฐ์ดํ„ฐ)๋ฅผ ์—…๋ฐ์ดํŠธ ํ–ˆ์„ ๋•Œ ๋‹จ์ˆœํžˆ ์—…๋ฐ์ดํŠธํ•œ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ƒˆ๋กœ์šด ์ƒํƒœ(๋ฐ์ดํ„ฐ)๋ฅผ ๊ฐ€์ง€๊ณ  render ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋•Œ render ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ณง๋ฐ”๋กœ DOM์— ๋ฐ˜์˜ํ•˜์ง€ ์•Š๊ณ , ์ด์ „์— render ํ•จ์ˆ˜๊ฐ€ ๋งŒ๋“ค์—ˆ๋˜ ์ปดํฌ๋„ŒํŠธ ์ •๋ณด์™€ ํ˜„์žฌ render ํ•จ์ˆ˜๊ฐ€ ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ ์ •๋ณด๋ฅผ ๋น„๊ตํ•œ๋‹ค. ์–ด๋–ป๊ฒŒ? Virtual DOM์ด๋ผ๋Š” ๊ฒƒ์„ ์ด์šฉํ•ด์„œ ๋น„๊ตํ•œ๋‹ค.

Virtual DOM์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ€์ง€ View(ํ˜„์žฌ์™€ ๋ฏธ๋ž˜)๋ฅผ ์ตœ์†Œํ•œ์˜ ์—ฐ์‚ฐ์œผ๋กœ ๋น„๊ตํ•œ ํ›„, ๋‘˜์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋‚ด DOM ํŠธ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์›์˜ ์‚ฌ์šฉ์ด ๋†’์ง€ ์•Š๋‹ค.

1.3 Virtual DOM

DOM์€ Document Object Model์˜ ์•ฝ์ž๋กœ, ๊ฐ์ฒด๋กœ ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ XML์ด๋‚˜ HTML๋กœ ์ž‘์„ฑํ•œ๋‹ค. DOM์˜ ๊ตฌ์กฐ๋Š” ํŠธ๋ฆฌ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํŠน์ • ๋…ธ๋“œ๋ฅผ ์ฐพ๊ฑฐ๋‚˜, ์‚ญ์ œํ•˜๊ฑฐ๋‚˜, ์›ํ•˜๋Š” ๊ณณ์— ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

DOM ์ž์ฒด๋Š” ๋น ๋ฅด๋‹ค. DOM ์ž์ฒด๋ฅผ ์ฝ๊ณ  ์“ธ ๋•Œ์˜ ์„ฑ๋Šฅ์€ ์ด์Šˆ๊ฐ€ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์›น ๋ธŒ๋ผ์šฐ์ € ๋‹จ์—์„œ DOM์— ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ์›น๋ธŒ๋ผ์šฐ์ €๊ฐ€ CSS๋ฅผ ๋‹ค์‹œ ์—ฐ์‚ฐํ•˜๊ณ , ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๊ณ , ํŽ˜์ด์ง€๋ฅผ ๋ฆฌํŽ˜์ธํŠธํ•œ๋‹ค. ์ด ๊ณผ์ •์— ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ์ž์›์ด ํ—ˆ๋น„ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ๋ฆฌ์•กํŠธ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ Virtual DOM๊ทธ๋ ‡๋‹ค๋ฉด Virtual DOM์ด๋ž€? ๊ธฐ์กด์˜ DOM๋ฅผ ์ถ”์ƒํ™” ํ•ด ๋†“์€ ๊ฒƒ. ๋ฆฌ์•กํŠธ๋Š” ์ง์ ‘ DOM์— ์ ‘๊ทผํ•˜์—ฌ ์กฐ์ž‘ํ•˜๋Š” ๋Œ€์‹ , ์ด๋ฅผ ์ถ”์ƒํ™”ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ๋งˆ์น˜ ์‹ค์ œ DOM์˜ ๊ฐ€๋ฒผ์šด ์‚ฌ๋ณธ๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๋ฆฌ์•กํŠธ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€ํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์‹ค์ œ DOM์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋Š” ๋‹ค์Œ ์„ธ๊ฐ€์ง€ ์ ˆ์ฐจ๋ฅผ ๊ฐ€์ง„๋‹ค.

  1. ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ „์ฒด UI๋ฅผ Virtual DOM์— ๋ฆฌ๋ Œ๋”๋งํ•œ๋‹ค.
  1. ์ด์ „ Virtaul DOM์— ์žˆ๋˜ ๋‚ด์šฉ๊ณผ ํ˜„์žฌ ๋‚ด์šฉ์„ ๋น„๊ตํ•œ๋‹ค.
  2. ์ˆ˜์ •๋œ ๋ถ€๋ถ„๋งŒ ์‹ค์ œ DOM์— ์ ์šฉํ•œ๋‹ค.

Node.js์™€ npm

Node.js๋Š” ํฌ๋กฌ V8 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์œผ๋กœ ๋นŒ๋“œํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„์ด๋‹ค. ์ด๊ฒƒ์œผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์ด ์•„๋‹Œ ๊ณณ์—์„œ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ๋„๊ตฌ์—๋Š” ECMAScript 6(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•)์„ ํ˜ธํ™˜์‹œ์ผœ์ฃผ๋Š” ๋ฐ”๋ฒจ(Babel), ๋ชจ๋“ˆํ™”๋œ ์ฝ”๋“œ๋ฅผ ํ•œ ํŒŒ์ผ๋กœ ํ•ฉ์น˜๊ณ (๋ฒˆ๋“ค๋ง) ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋ฆฌ๋กœ๋”ฉํ•˜๋Š” ๋“ฑ์˜ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์›นํŒฉ(Webpack)๋“ฑ์ด ์žˆ๋‹ค.

npm์€ Node.js์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ๋„๊ตฌ์ด๋‹ค. npm์œผ๋กœ ์ˆ˜๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

ESLint: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ• ๋ฐ ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ๊ฒ€์‚ฌํ•ด ์ฃผ๋Š” ๋„๊ตฌ

Reactjs Code Snippets: ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๋ฐ ๋ผ์ดํ”„์‚ฌ์ดํด ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋‹จ์ถ• ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ๋ชจ์Œ

Prettier-Code-formatter: ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•ด์ฃผ๋Š” ๋„๊ตฌ

์ด์ œ Node.js์™€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ๋„๊ตฌ์ธ npm์„ ์„ค์น˜ํ•ด๋ณด์ž.