Node.js - ynjch97/YNJCH_WIKI GitHub Wiki

1. Node.js

  • Node.js๋Š” JavaScript ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ
    • ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ : ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ”„๋ผ๋ฅผ ์˜๋ฏธ
    • Node.js๋Š” JavaScript๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œ

1-1. Node.js์˜ ํŠน์ง•

  • ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋ฉฐ ๋ฌด๋ฃŒ ์ด์šฉ ๊ฐ€๋Šฅ
  • Windows, Linux, Mac OS ๋“ฑ์—์„œ ์‹คํ–‰๋จ
  • ์„œ๋ฒ„์—์„œ JavaScript๋ฅผ ์‚ฌ์šฉ
  • ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ๋ฐฉ์‹ > ์„œ๋ฒ„์˜ ๋ฌด๋ฆฌ๊ฐ€ ์ ์Œ

1-2. Node.js์˜ ์ž‘๋™ ๋ฐฉ์‹

  • ์ž‘์—…์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ์ด๋™
  • ์‹œ์Šคํ…œ์ด ๋‹ค์Œ ์š”์ฒญ์„ ์œ„ํ•ด ๋Œ€๊ธฐ
  • ํŒŒ์ผ์„ ์—ด๊ณ  ์ฝ์„ ๋•Œ ์‹œ์Šคํ…œ์€ ํด๋ผ์ด์–ธํŠธ์— ๋‚ด์šฉ์„ ๋ณด๋ƒ„

1-3. Node JS ํŒŒ์ผ์ด๋ž€

  • ์ž‘์—…์„ ํฌํ•จํ•˜๊ณ  ์„ค์ •๋œ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ์‹คํ–‰
  • ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์„œ๋ฒ„์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ
  • ํŒŒ์ผ์€ ์„œ๋ฒ„์—์„œ ์‹œ์ž‘๋˜์–ด์•ผ ํ•จ
  • ํŒŒ์ผ ํ™•์žฅ์ž๋Š” '.js'

1-4. Node.js ํ™œ์šฉ

  • ๋™์  ์ฝ˜ํ…์ธ  ์ƒ์„ฑ ๊ฐ€๋Šฅ
  • ์„œ๋ฒ„์—์„œ ํŒŒ์ผ ์ƒ์„ฑ, ์—ด๊ธฐ ๋ฐ ์ฝ๊ธฐ ๋˜๋Š” ์‚ญ์ œ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ˆ˜์ •

2. Node.js ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ๋†’์€ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ : Non-blocking I/O์™€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„
  • ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ JavaScript ์–ธ์–ด๊ฐ€ I/O๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š๋Š” ๊ฒƒ (NodeJS ๊ฐœ๋ฐœ์ž Ryan Dahi)
  • ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„์ž„
    • node๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌ, ์ž‘์—… ์ˆœ์„œ๋ฅผ ์‹œ์ž‘ํ•จ

2-1. Node.js์˜ ์žฅ์ 

  • Google JavaScript ์—”์ง„
    • ๋น ๋ฅด๊ณ  ํ™•์žฅ๊ฐ€๋Šฅํ•œ ์›น ์•ฑ
  • ์„œ๋ฒ„ ์ธก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ
    • ๋…ธ๋“œ๋Š” ํŠน์ • ์ด๋ฒคํŠธ(์‚ฌ์šฉ์ž ์ž‘์—…, ๋ฉ”์‹œ์ง€ ๋“ฑ)์— ์˜ํ•ด ํ๋ฆ„์ด ๊ฒฐ์ •๋˜๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ
  • ์‰ฝ๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅ
    • ๋‹ค์ค‘ CPU ์„œ๋ฒ„๋กœ ํ™•์žฅํ•˜๊ธฐ๊ฐ€ ์‰ฌ์›€
  • ๊ฐ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์„œ๋ฒ„๋ผ๋ฆฌ, ๋…ธ๋“œ๋Š” ๋ฉ€ํ‹ฐ ์ฝ”์–ด ์„œ๋ฒ„์— ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๋Š” ๊ฐœ๋ณ„ ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ

2-2. Node.js์˜ ์žฅ์ 

  • JavaScript๋Š” ๋ฐฐ์šฐ๊ธฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ˆ˜๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ดˆ์‹ฌ์ž์—๊ฒŒ ์ข‹์Œ
  • Node๋ฅผ ๊ตฌ๊ธ€์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฆ„
  • DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ˆ˜ JSON์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ์ด ์ง€์›๋จ (ex. NPM, Grunt ๋“ฑ)
  • SNS, ์ฑ„ํŒ…, ๊ฒŒ์ž„ ๋“ฑ ์‹ค์‹œ๊ฐ„ ์–ดํ”Œ์„ ๋งŒ๋“ค๊ธฐ ์ข‹์Œ
  • ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ์— ์ ํ•ฉ (ex. ์˜ค๋””์˜ค, ๋น„๋””์˜ค ํŒŒ์ผ)

2-3. Non-blocking I/O

  • ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด : ์—ฌ๋Ÿฌ ์š”์ฒญ์ด ๋™์‹œ์— ๋“ค์–ด์™”์„ ๋•Œ ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ผ์„ ์ฒ˜๋ฆฌ
  • Non-blocking I/O : ๊ธˆ๋ฐฉ ์™„๋ฃŒ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ์„ค๊ณ„๋œ ๋Ÿฐํƒ€์ž„

3. Node.js ์„ค์น˜

  • Node 20.10.0 ์„ค์น˜ ๊ธฐ์ค€์œผ๋กœ ํ•จ
  • https://nodejs.org/dist/v20.10.0/ > node-v20.10.0-x64.msi
  • ๊ธฐ๋ณธ ์„ค์ • ๊ทธ๋Œ€๋กœ ์„ค์น˜
# ์„ค์น˜๋œ Node ๋ชฉ๋ก
nvm list
# ์‚ฌ์šฉํ•  Node ๋ฒ„์ „ ์„ ํƒ
nvm use 20.10.0

# ์•„๋ž˜์™€ ๊ฐ™์ด cmd ์—์„œ ์„ค์น˜๋„ ๊ฐ€๋Šฅ
nvm list available
nvm install 20.10.0
nvm use 20.10.0

3-1. Intelli J ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ