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 ๋ชฉ๋ก
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 ์์ ์ฌ์ฉํ๊ธฐ