์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 

Node.js ์›น๊ฐœ๋ฐœ๋กœ ์•Œ์•„๋ณด๋Š” ๋ฐฑ์—”๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ดํ•ด

Node.js,์˜ ํ•ต์‹ฌ๊ธฐ๋Šฅ์„ ๋‹ค๋ฃจ๋ฉด์„œ ๋ฐฑ์—”๋“œ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ์•Œ์•„๋ณด๊ณ , Angular๋‚˜ React์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ(SPA)์— ํ•„์š”ํ•œ back-end ํ•ต์‹ฌ ์š”์†Œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๊ฐ„๊ฒฐํ•œ ๋™์˜์ƒ๋“ค๋กœ ํ•ต์‹ฌ์ ์ธ ๋‚ด์šฉ๋“ค์„ ๋น ๋ฅด๊ณ  ์ค‘์š”ํ•˜๊ฒŒ ๋‹ค๋ค„ ๊ฐœ๋ฐœ์˜ ํ๋ฆ„์„ ์ตํžˆ๊ณ , ๋”ฐ๋ผํ•˜๋Š” ์‹ค์Šต์œผ๋กœ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์Œ“์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Thumbnail

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

1. ๊ฐ•์ขŒ์†Œ๊ฐœ

JavaScript์–ธ์–ด๋Š” Node.js, ๋ฅผ ํ†ตํ•ด์„œ Back-end์—์„œ๋„ ๋งŽ์ด ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ ๊ฐ•์ขŒ์—์„œ๋Š” Node.js,์˜ ํ•ต์‹ฌ๊ธฐ๋Šฅ์„ ๋‹ค๋ฃจ๋ฉด์„œ ๋ฐฑ์—”๋“œ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ์•Œ์•„๋ณด๊ณ , Angular๋‚˜ React์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ(SPA)์— ํ•„์š”ํ•œ back-end ํ•ต์‹ฌ ์š”์†Œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. SPA(Single Page Application) ๊ฐœ๋ฐœ์—์„œ๋Š” Template ์กฐ์ž‘๊ณผ Routing ์ฒ˜๋ฆฌ๋ฅผ ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐฑ์—”๋“œ์—์„œ ๋‚˜๋ˆ  ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐฑ์—”๋“œ์—์„œ๋Š” RESTful API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ์ฃผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ด๋Ÿฐ ์ถ”์„ธ์—์„œ Node.js,๋Š” ๊ฝค ์ ์ ˆํ•œ ๋ฐฑ์—”๋“œ ๊ธฐ์ˆ ์ด๋ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ SPA๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ํ•„์ˆ˜ ๋ฐฑ์—”๋“œ ๊ธฐ์ˆ ์ด ๋ฌด์—‡์ด๊ณ , ์–ด๋–ป๊ฒŒ ํด๋ผ์ด์–ธํŠธ์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜์—์„œ๋Š” ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„, ํ”„๋ก ํŠธ์—”๋“œ ์ „๋ฌธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„๋‘๋ฉด ์œ ์šฉํ•œ ์ง€์‹๊ณผ ๊ธฐ์ˆ ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋ณธ ๊ณผ์ •์„ ํ†ตํ•ด์„œ ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋™์ž‘๋ฐฉ์‹์„ ์ข€๋” ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐ์šฐ๋Š” ๊ฒƒ๋“ค

nodeJS + Express ์›น์„œ๋ฒ„ ์„ค์ • Request,Response ์ฒ˜๋ฆฌ Database ์—ฐ๋™ Router ๊ฐœ์„  - ๋ชจ๋“ˆํ™” DB์— ๋ฐ์ดํ„ฐ์ถ”๊ฐ€ ํŒจ์ŠคํฌํŠธ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋กœ์ง ๊ตฌํ˜„ (ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ) RESTful API

2. ๋„์›€๋˜๋Š” ๋ถ„๋“ค

  • ๋ฐฑ์—”๋“œ ๊ธฐ์ˆ ์ด ๊ถ๊ธˆํ•œ ์›นํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž.
  • ๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ์€ ์ต์ˆ™ํ•˜์ง€๋งŒ JavaScript๋‚˜ nodeJS ๊ฒฝํ—˜์ด ์—†๋Š” ๊ฐœ๋ฐœ์ž.
  • Javascript ์˜ ์“ฐ์ž„์ƒˆ๋ฅผ ์ข€ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž
  • ์›นํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ๊ฐ„์˜ ๊ธฐ์ˆ ์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ถ๊ธˆํ•œ ์ดˆ๋ณด๊ฐœ๋ฐœ์ž.

3. ๊ฐ•์ขŒํŠน์ง•

  • ์›น๊ฐœ๋ฐœ ์ดˆ๊ธ‰๋‚œ์ด๋„ ๊ณผ์ •.
  • Node.js, Express๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•.
  • Template Engine
  • Ajax์™€ JSON์„ ํ™œ์šฉํ•œ RESTful API ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ๊ธฐ์ดˆ.
  • Passport๊ธฐ๋ฐ˜์˜ ์ธ์ฆ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•.

4. ๊ฐ•์‚ฌ์†Œ๊ฐœ

์œค์ง€์ˆ˜

- ํ˜„์žฌ ์ฝ”๋“œ์Šค์ฟผ๋“œ ์›นํ”„๋ก ํŠธ์—”๋“œ ๋งˆ์Šคํ„ฐ.
- SKํ”Œ๋ž˜๋‹› ์›นUI ๋งˆ์Šคํ„ฐ.
- NHN NEXT ์›นUI ์ „์ž„๊ต์ˆ˜.
- ๋„ค์ด๋ฒ„ ์›นUI ๊ฐœ๋ฐœํŒ€์žฅ.
- <๊ฐœ์ธ์œ ํŠœ๋ธŒ ์ฑ„๋„>

5. ์†Œ์Šค์ฝ”๋“œ

์‹ค์Šต์—์„œ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/crongro/node_server_inflearn
์ฝ”๋“œ์Šค์ฟผ๋“œ

์ฝ”๋“œ์Šค์ฟผ๋“œ
๊ฐœ๋ฐœ์ž ์ถœ์‹ ์˜ ๊ต์œก ์ „๋ฌธ๊ฐ€๋“ค์ด ๋งŒ๋“  ์ตœ๊ณ ํ’ˆ์งˆ์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ต์œก๊ธฐ๊ด€
http://codesquad.kr

์•ˆ๋…•ํ•˜์„ธ์š”
์œค์ง€์ˆ˜์ž…๋‹ˆ๋‹ค.

๊ณต๋™ ์ง€์‹๊ณต์œ ์ž

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

์ „์ฒด

30๊ฐœ โˆ™ (4์‹œ๊ฐ„ 27๋ถ„)

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

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

173๊ฐœ

4.6

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

  • ์ด์Šนํ˜ธ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ์ด์Šนํ˜ธ

    ์ˆ˜๊ฐ•ํ‰ 2

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์ข‹์€ ๊ฐ•์˜์—์š”

    • ์œค์ง€์ˆ˜
      ์ง€์‹๊ณต์œ ์ž

      ๋„ต ํ”ผ๋“œ๋ฐฑ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ^^

  • For ever๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    For ever

    ์ˆ˜๊ฐ•ํ‰ 7

    โˆ™

    ํ‰๊ท  ํ‰์  4.9

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    Node.js ์ดํ•ด์— ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

    • ์œค์ง€์ˆ˜
      ์ง€์‹๊ณต์œ ์ž

      ๋„์›€์ด ๋˜์…จ๋‹ค๋‹ˆ ๋‹คํ–‰์ž…๋‹ˆ๋‹ค.

  • Lee Euido๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    Lee Euido

    ์ˆ˜๊ฐ•ํ‰ 3

    โˆ™

    ํ‰๊ท  ํ‰์  4.0

    3

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์žฅ์  : Node js์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์  : ์šฐ์„  ๋ญ”๊ฐ€๋ฅผ ํ•  ๋•Œ ๊ทธ๋ƒฅ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€ ์•„๋‹Œ ์™œ? ํ•ด์•ผ๋˜๋Š”์ง€ ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์•Œ๋ ค์ฃผ์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, middleware ํŽธ์—์„œ middleware๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์ด ์ˆ˜์—…์—์„œ ์šฐ๋ฆฌ๊ฐ€ middleware๋ฅผ ์™œ ์„ค์น˜ํ•ด์•ผ๋˜๋Š”์ง€ ๊ฐ„๋‹จํ•œ ๋ถ€์—ฐ์„ค๋ช…์ด ์—†์–ด ์ง์ ‘ ์ธํ„ฐ๋„ท์—์„œ ์ฐพ์•„๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ™์€ ๊ฐ•์˜์—์„œ ์˜ˆ๋ฅผ ๋“ค๋ฉด ๊ณต์‹ ์›น์‚ฌ์ดํŠธ์—์„œ ์†Œ์Šค๋ฅผ ๊ธ์–ด์˜ค๋Š”๋ฐ ๊ฐ๊ฐ์˜ ์—ญํ• ์ด ๋ฌด์—‡์ด๊ณ  ์™œ ์จ์•ผ๋˜๋Š”์ง€๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ๋‚˜๋งˆ ์†Œ๊ฐœํ•ด์ฃผ์‹ ๋‹ค๋ฉด ์ถ”ํ›„์— ๋‹จ์ˆœํžˆ ์•Œ๋ ค์ฃผ์‹ ๊ฒƒ ๋ฟ๋งŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์Šค์Šค๋กœ ์‘์šฉ ์—ฐ์Šต์„ ํ•˜๊ธฐ ์‰ฝ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž์˜ ์ž…์žฅ์—์„œ ์™œ ์“ฐ๋Š”์ง€ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์—์„œ ๊ทธ๋ƒฅ ์“ด๋‹ค๋ฉด ์žŠ์–ด๋ฒ„๋ฆฌ๊ณ  ๋” ์‰ฝ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

    • ์œค์ง€์ˆ˜
      ์ง€์‹๊ณต์œ ์ž

      ์†”์งํ•œ ํ”ผ๋“œ๋ฐฑ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๊ฐ€ ๋ฐฑ์—”๋“œ์˜ ํ๋ฆ„์„ ์ดํ•ดํ•˜๋Š” ์ธก๋ฉด์—์„œ ์ œ์ž‘๋˜์–ด ๊ทธ๋ ‡๊ฒŒ ๋А๋ผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ข€๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋‹ด์ง€ ๋ชปํ•œ์  ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š”, ์ง์ ‘ ๋‚ด์šฉ์„ ์ฐพ์•„๋ณด์‹œ๋ฉด์„œ ์Šค์Šค๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ๋„์›€์ด ๋˜์‹ค ์ˆ˜๋„ ์žˆ์„๊ฒƒ์ด๋ผ ์ƒ๊ฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ•œ๋Ÿ‰๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ํ•œ๋Ÿ‰

    ์ˆ˜๊ฐ•ํ‰ 5

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ๊ฐœ๋…์„ ์žก๋Š”๋ฐ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ^^

    • ์œค์ง€์ˆ˜
      ์ง€์‹๊ณต์œ ์ž

      ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ NODE์›น๊ฐœ๋ฐœ์— ๋„์ „ํ•ด๋ณด์„ธ์š”!

  • ์ด์šฐ์ง„๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ์ด์šฐ์ง„

    ์ˆ˜๊ฐ•ํ‰ 5

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์ด์•ผ... ์ด๋Ÿฐ ๊ณ ํ’ˆ์งˆ ๊ฐ•์˜๊ฐ€... ๋ฌด๋ฃŒ๋กœ ๊ณต๊ฐœ๋˜๋‹ค๋‹ˆ... ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! node.js ์ž…๋ฌธํ•˜์‹œ๋Š” ๋ถ„๋“ค์—๊ฒŒ ํฐ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค! ์œ ๋ฃŒ๊ฐ•์˜ ์ˆ˜์ค€์ด๋ผ๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค. ์ค‘๊ฐ„์ค‘๊ฐ„์— ๊ฐ•์‚ฌ๋‹˜์˜ ์‹ค์ˆ˜์— ์˜ํ•œ ๋””๋ฒ„๊น… ํƒ€์ž„๋„ ์ •๋ง ์ข‹์•˜์Šต๋‹ˆ๋‹ค! ๋””๋ฒ„๊น…์„ ์ง์ ‘ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฑด ๋ˆ์ฃผ๊ณ ๋„ ๋ฐฐ์šธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค... ๋””๋ฒ„๊น…์œผ๋กœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๋Š” ์ ์œผ๋กœ ๊ฐ•์˜์˜ ์งˆ์ด ๋‚ฎ๋‹ค๊ณ  ๋ง์”€ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๊ณ„์‹œ๋‹ค๋ฉด ์ž ์žฌ์  ๋ฐœ์ „ ๊ฐ€๋Šฅ์„ฑ์„ ์Šค์Šค๋กœ๊ฐ€ ๋Šฆ์ถ”๋Š” ๊ฑฐ๋ผ๊ณ  ๋ด…๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šฐ๋Š”๊ฑด ํ˜„์—ญ์—์„œ๋„ ๋ฐฐ์šฐ๊ธฐ ํž˜๋“ญ๋‹ˆ๋‹ค.. ๋ฌธ์ œํ•ด๊ฒฐ์˜ ๊ณผ์ •์ธ๋ฐ ์ €๋Š” ์ •๋ง ์ข‹์•˜์Šต๋‹ˆ๋‹ค! ์ถ”ํ›„ ์ง„ํ–‰๋˜๋Š” ๊ฐ•์ขŒ๋Š” ์—†์œผ์‹ ์ง€์š”! ์œ ๋ฃŒ๊ฐ•์˜๋ผ๊ณ ํ•ด๋„ ์ €๋Š” ๋“ค์„ ์˜ํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค! ์ •๋ง ์ž˜ ๋ฐฐ์šฐ๊ณ  ๊ฐ‘๋‹ˆ๋‹ค!

    • ์œค์ง€์ˆ˜
      ์ง€์‹๊ณต์œ ์ž

      ์ฝ”๋“œ์Šค์ฟผ๋“œ๋กœ ์˜ค์„ธ์š”!! ๋Š” ๋†๋‹ด์ด๊ณ ์š”. ๋””๋ฒ„๊น…์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” 1์ธ์ž…๋‹ˆ๋‹ค. breakpoint; console.log("๋…ธ๋“œjs๋””๋ฒ„๊น… ์˜์ƒ์ข‹์€ ๊ฒƒ๋“ค ๋งŽ์œผ๋‹ˆ ๋” ๋งŽ์ด ๋ฐฐ์›Œ๋ณด์„ธ์š”! ")

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

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

๊ณต๊ฐœํ•˜์ง€ ์•Š๋Š” ๊ฐ•์˜๋กœ ์ˆ˜๊ฐ•์ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.