๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์ „์ฒด ๊ณผ์ •)

๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(์ „์ฒด ๊ณผ์ •)

๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ตœ๊ทผ ๊ณ ์ „์ ์ธ ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋งŒํผ ๋ฐœ์ „ํ–ˆ์œผ๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €์™€ Node.js ๋ชจ๋‘์—์„œ JavaSript์˜ ์„ธ๊ณ„์—์„œ ํ•ด๋‹น ๊ธฐ์ˆ ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์˜ ์„ธ๊ณ„๊ด€์„ ํ˜•์„ฑํ•˜๋Š” ํ•ต์‹ฌ ์œ„์น˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ฐจ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋„๋ฆฌ ํผ์ง„ ๋ชจ๋“  ๋ฐฉ๋ฒ•, ์ด๋“ค ์‚ฌ์ด์˜ ์–ด๋Œ‘ํ„ฐ ๋ฐ ๋ณด์กฐ ๊ฐœ๋ฐฉ์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ์ „์ฒด์ ์ด๊ณ  ๊ฐ€์žฅ ์™„์ „ํ•œ ๊ณผ์ •์„ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ˜„์žฌ 23๊ฐœ์˜ ๊ฐ•์˜, 3๊ฐœ์˜ ๋ณด๊ณ ์„œ, github์— ์žˆ๋Š” ๋งŽ์€ ์ฝ”๋“œ ์˜ˆ์ œ๊ฐ€ ํฌํ•จ๋œ 28๊ฐœ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•ฝ 17์‹œ๊ฐ„ ๋ถ„๋Ÿ‰์˜ ๋™์˜์ƒ: ์žฌ์ƒ๋ชฉ๋ก ๋งํฌ.

๊ณ„ํš์˜ ์„ค๋ช…

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

๊ฐ•์˜์ฃผ์ œ

1. ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(๊ฐœ์š”)
2. ํƒ€์ด๋จธ, ํƒ€์ž„์•„์›ƒ, EventEmitter
3. ์ฝœ๋ฐฑ์„ ์‚ฌ์šฉํ•œ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
4. ๋น„์ฐจ๋‹จ ๋น„๋™๊ธฐ ๋ฐ˜๋ณต
5. async.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ๋น„๋™๊ธฐ์„ฑ
6. ์•ฝ์†์˜ ๋น„๋™๊ธฐ์„ฑ
7. ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ๋ฐ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
8. ๋น„๋™๊ธฐ ์–ด๋Œ‘ํ„ฐ: ์•ฝ์†, ์ฝœ๋ฐฑ, ๋น„๋™๊ธฐํ™”
9. ๋น„๋™๊ธฐ์‹ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ธฐ
10. Promise์—์„œ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ค๋ฅ˜
11. ๋น„๋™๊ธฐ ์ŠคํƒํŠธ๋ ˆ์ด์Šค์˜ ๋ฌธ์ œ
12. ๋ฐœ์ „๊ธฐ ๋ฐ ๋น„๋™๊ธฐ์‹ ๋ฐœ์ „๊ธฐ
13. ๋ฐ˜๋ณต์ž์™€ ๋น„๋™๊ธฐ ๋ฐ˜๋ณต์ž
14. ๋น„๋™๊ธฐ ์ž‘์—… ์ทจ์†Œ
15. ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ๊ตฌ์„ฑ
16. ๊ฐ€๋Šฅํ•˜๊ณ  ๊ฐ€๋ฒผ์šด ๊ฒƒ์ด ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค
17. ๋™์‹œ ๋น„๋™๊ธฐ ํ
18. ํŒจํ„ด ๊ฐœ๋ฐฉํ˜• ์ƒ์„ฑ์ž(๊ณต๊ฐœ ์ƒ์„ฑ์ž)
19. ๋ฏธ๋ž˜: ๋ฌด์ƒํƒœ ๋ฏธ๋ž˜์˜ ๋น„๋™๊ธฐ์„ฑ
20. ์ง€์—ฐ: ์ƒํƒœ ์ €์žฅ ์ฐจ๋“ฑ์˜ ๋น„๋™๊ธฐ์„ฑ
21. ๋ฐฐ์šฐ ๋ชจ๋ธ
22. ํŒจํ„ด ๊ด€์ฐฐ์ž(Observer + Observable)
23. RxJS์™€ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์˜ ๋น„๋™๊ธฐ์„ฑ

๊ฐ ๋น„๋””์˜ค ์•„๋ž˜์—๋Š” ๋น„๋””์˜ค์—์„œ ์„ค๋ช…ํ•˜๋Š” ์ฝ”๋“œ ์˜ˆ์ œ๊ฐ€ ์žˆ๋Š” ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ํ•˜๋‚˜์˜ ๋น„๋™๊ธฐ ์ถ”์ƒํ™”๋กœ ์ถ•์†Œํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ์„ฑ์— ๋Œ€ํ•œ ๋ณดํŽธ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์—†์œผ๋ฉฐ ๊ฐ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์ด ํŠน์ • ์ž‘์—…์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ๊ณผ์ •์€ ๋ณด์™„๋  ๊ฒƒ์ด๋ฉฐ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ƒˆ๋กœ์šด ์ฃผ์ œ๋ฅผ ์ œ์•ˆํ•˜๊ณ  ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ๋‹จ์ˆœํžˆ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๊ฐ€๋ฅด์น˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‚ด๋ถ€์—์„œ ๋น„๋™๊ธฐ ์ถ”์ƒํ™”๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  ์ถ”์ƒํ™”๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๊ณ  ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„์œผ๋กœ ์ œ๊ณต๋˜๋ฉฐ ํ•ด๋‹น ์ž‘์—…์€ ๋‹จ๊ณ„๋ณ„๋กœ ๋ถ„์„๋ฉ๋‹ˆ๋‹ค.

๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž๋งŒ ์„ค๋ฌธ ์กฐ์‚ฌ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์ œ๋ฐœ

๊ฐ•์ขŒ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  • ์ „์ฒด ๊ณผ์ •์„ ์‹œ์ฒญํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์„ ๋ณ„ํ•ด์„œ ๋ณผ๊ฒŒ์š”

  • ๋‚˜์—๊ฒŒ๋Š” ํ•œ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

  • ๋‚˜๋Š” ๊ฐ•์ขŒ์— ๊ธฐ์—ฌํ•  ๊ฒƒ์ด๋‹ค.

  • ๋‚˜๋Š” ๋น„๋™๊ธฐ์— ๊ด€์‹ฌ์ด ์—†๋‹ค

8๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํˆฌํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. 1๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๊ถŒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€