NodeJS κΈ°μ΄
Node.js μ€μΉ

Overview
β’
λ€μ΄λ‘λ
β’
μ€μΉ
Node.js μ€μΉ
npm λ²μ μ λ°μ΄νΈ

npm λ²μ μ
λ°μ΄νΈ νλ λ°©λ²μ μμλ΄
λλ€.
npm μ΄λ?
npm λ²μ μ
λ°μ΄νΈ
Node μμνκΈ°

β’
CMD μμ node μ€ν
β’
VSCODE ν°λ―Έλ μμ μ€ν
β’
Node.js μ’
λ£
β’
μλ°μ€ν¬λ¦½νΈ(js) νμΌ μ€ν
Node μμνκΈ°
Node.js ν΅μ¬κ°λ
.jpg&blockId=b9fdfd0e-bcc1-45d9-a615-fc5be864316e)
β’
μ±κΈ μ€λ λ (Single-Threaded)
β’
λ
ΌλΈλ‘νΉ I/O (Non-Blocking I/O)
β’
μ΄λ²€νΈ κΈ°λ° (Event-Driven)
β’
npm (Node Package Manager)
Node.js ν΅μ¬κ°λ
.jpg&blockId=be1185a4-f956-4a1c-8129-2f8032848388)
Node νλ‘μ νΈ .gitignore
Nodeλ‘ λ§λ νλ‘μ νΈλ node_modules λλ¬Έμ μμ² λ§μ λ³κ²½ μ¬νμ΄ λ°μνλ€. npm install ν 2K, 4K μλ‘ μμ² λ§μ λ³κ²½ μ¬ν μΉ΄μ΄νΈκ° λ¬λ€.
Node.js νλ‘μ νΈ - .gitignore
ECMAScript

ECMAScriptλ μ€ν¬λ¦½νΈ μΈμ΄μΈ JavaScriptμ νμ€ κ·κ²©μ μ μνλ κ·κ²©μ
λλ€.
μλ°μ€ν¬λ¦½νΈμ λ²μ μ λνλ΄λ μ΄λ¦μ΄λΌκ³ μκ°ν΄λ μ’μ΅λλ€. μ€μ λ‘, ECMAScriptλ μλ°μ€ν¬λ¦½νΈμ κΈ°λ³Έμ μΈ λμ, λ°μ΄ν° νμ
, κ°μ²΄, λ¬Έλ² λ±μ μ μν©λλ€.
μ¬λ¬ λΈλΌμ°μ μ JavaScript μμ§μ ECMAScript νμ€μ λ°λ₯΄λ©°, μλ‘μ΄ ECMAScript λ²μ μ΄ λμ¬ λλ§λ€ μ΄λ₯Ό ꡬννμ¬ λΈλΌμ°μ μ λ°νμ νκ²½μμ κ°λ°μκ° μ΅μ μ μΈμ΄ κΈ°λ₯μ μ¬μ©ν μ μλλ‘ ν©λλ€.
ECMAScript

λΉλκΈ° μμ²
λκΈ°μ
μ¬λ¬ μμ
μ΄ μλ‘μ νμ΄λ°(λκΈ°)μ λ§μΆμ΄ μμλλ‘ λμνλ λ°©μ
λΉλκΈ°μ
λΉλκΈ° μμ²
XMLHttpRequest

XMLHttpRequestλ λΈλΌμ°μ μμ μ 곡νλ κ°μ²΄λ‘, λΉλκΈ°μ μΌλ‘ μλ²μ ν΅μ ν μ μλλ‘ λμμ€λλ€. μ΄κΈ°μ μ£Όλ‘ μ¬μ©λμμΌλ, μ½λ°± μ§ν₯μ μ΄κ³ 볡μ‘ν API κ΅¬μ‘°λ‘ μΈν΄ κ°λ
μ±μ΄ λ¨μ΄μ§λ λ¨μ μ΄ μμ΅λλ€.
λΈλΌμ°μ | node | |
μ€ν μ¬λΆ |
XMLHttpRequest
fetch

JavaScriptμμ μ 곡νλ API μ€ νλλ‘, λ€νΈμν¬ μμ²μ λ§λ€κ³ μλ΅μ λ€λ£° μ μκ² ν΄μ£Όλ κΈ°λ₯μ μ 곡ν©λλ€. fetch APIλ Promiseλ₯Ό κΈ°λ°μΌλ‘ λμνλ©°, λΉλκΈ°μ μΌλ‘ λ€νΈμν¬ μμ²μ μ²λ¦¬ν μ μμ΅λλ€.
λΈλΌμ°μ | node | |
μ€ν μ¬λΆ |
fetch() λ μλ°μ€ν¬λ¦½νΈμ λΈλΌμ°μ λ΄μ₯ ν¨μλ‘, λ€νΈμν¬μμ 리μμ€λ₯Ό κ°μ Έμ€λ λμμ κ°κ²°νκ² ννν©λλ€.Β fetch() ν¨μλ:
β’
첫 λ²μ§Έ μΈμλ‘ URLμ λ°μ΅λλ€.
fetch

jQuery AJAX
β’
jQuery ajax κ°λ°λ¬Έμ
$.ajax
axios

axiosλ JavaScriptμ HTTP ν΄λΌμ΄μΈνΈ λΌμ΄λΈλ¬λ¦¬λ‘, λΈλΌμ°μ μ Node.js νκ²½μμ λͺ¨λ μ¬μ©ν μ μμ΅λλ€. axiosλ Promiseλ₯Ό κΈ°λ°μΌλ‘ ν κ°λ ₯ν κΈ°λ₯κ³Ό λ€μν μ€μ μ΅μ
μ μ 곡νμ¬ λ€νΈμν¬ μμ²μ λ³΄λ€ νΈλ¦¬νκ² λ€λ£° μ μλλ‘ λμμ€λλ€.
Axios 기본 ꡬ쑰
axios

κ°μ
β’
Promise
β’
Promise μν
β’
μ£Όμ λ©μλ
β’
κΈ°λ³Έ μμ μ½λ
β’
API νΈμΆ μμ μ½λ
Promise

async & await
JavaScriptμ λΉλκΈ° νλ‘κ·Έλλ°μ κ°νΈνκ² λ§λλ ν€μλμ
λλ€.
β’
β’
async
β’
await
async & await
global

Node.jsμ global κ°μ²΄λ λͺ¨λ λͺ¨λμμ μ κ·Ό κ°λ₯ν μ μ κ°μ²΄μ
λλ€.
μ΄ κ°μ²΄λ λͺ¨λ λͺ¨λμμ 곡μ λλ©°, λͺ¨λ λ΄μμ μ μΈνμ§ μκ³ μ¬μ©ν μ μλ λ€μν μμ±κ³Ό λ©μλλ₯Ό μ 곡ν©λλ€. μλ₯Ό λ€μ΄, console κ°μ²΄λ setTimeout() ν¨μλ global κ°μ²΄μ μν΄ μμ΅λλ€.
global
console

Node.jsμ consoleμ κ°λ°μκ° μ½λλ₯Ό μ€ννλ λμ λ‘κ·Έ λ©μμ§λ₯Ό μΆλ ₯νκΈ° μν΄ μ¬μ©λλ κ°μ²΄μ
λλ€. console κ°μ²΄λ λ€μν λ©μλλ₯Ό μ 곡νμ¬ λ‘κ·Έ λ©μμ§μ μΆλ ₯ λ 벨과 νμμ μ§μ ν μ μμ΅λλ€.
μΌλ°μ μΌλ‘ console.log() λ©μλλ₯Ό μ¬μ©νμ¬ κ°μ μ½μμ μΆλ ₯ν μ μμ΅λλ€. μ΄ λ©μλλ λ¬Έμμ΄, λ³μ, κ°μ²΄ λ± λ€μν μ νμ λ°μ΄ν°λ₯Ό μΆλ ₯ν μ μμ΅λλ€. λν console.error() λ©μλλ₯Ό μ¬μ©νμ¬ μλ¬ λ©μμ§λ₯Ό μΆλ ₯νκ³ console.warn() λ©μλλ₯Ό μ¬μ©νμ¬ κ²½κ³ λ©μμ§λ₯Ό μΆλ ₯ν μλ μμ΅λλ€.
console κ°μ²΄λ λ€μν λ©μλλ₯Ό μ 곡νλλ°, μ΄λ₯Ό μ¬μ©νμ¬ κ°λ° μ€μ λλ²κΉ
μ μννκ±°λ μ½λμ μ€ν μνλ₯Ό νμΈν μ μμ΅λλ€. μλ₯Ό λ€μ΄ console.time() λ° console.timeEnd() λ©μλλ₯Ό μ¬μ©νμ¬ μ½λμ μ€ν μκ°μ μΈ‘μ ν μ μκ³ , console.trace() λ©μλλ₯Ό μ¬μ©νμ¬ μ½λμ νΈμΆ μ€νμ μΆλ ₯ν μλ μμ΅λλ€.
console
νμ΄λ¨Έ

Node.jsμλ λ€μν νμ΄λ¨Έ λ΄μ₯ κ°μ²΄κ° μμ΅λλ€. μ΄λ€ νμ΄λ¨Έ κ°μ²΄λ λΉλκΈ°μ μΈ μμ
μ μ€μΌμ€λ§νκ³ μ€ννλ λ° μ¬μ©λ©λλ€.
νμ΄λ¨Έ μ€ν ν¨μ
λ©μλ | μ€λͺ
|
setTimeout | μ§μ λ μκ°μ΄ κ²½κ³Όν νμ ν λ²λ§ μ½λ°± ν¨μλ₯Ό μ€νν©λλ€. |
setInterval | μΌμ ν κ°κ²©μΌλ‘ μ½λ°± ν¨μλ₯Ό λ°λ³΅μ μΌλ‘ μ€νν©λλ€. |
setImmediate | νμ¬ μ€ν μ€μΈ μ΄λ²€νΈ 루νλ₯Ό λ€ μ²λ¦¬ν νμ μ½λ°± ν¨μλ₯Ό μ€νν©λλ€. |
νμ΄λ¨Έ μ·¨μ ν¨μ
λ©μλ | μ€λͺ
|
clearTimeout | setTimeoutμ μν΄ μμ½λ μμ
μ μ·¨μν©λλ€. |
clearInterval | setIntervalμ μν΄ μμ½λ μμ
μ μ·¨μν©λλ€. |
clearImmediate | setImmediateμ μν΄ μμ½λ μμ
μ μ·¨μν©λλ€. |
νμ΄λ¨Έ
process

Node.jsμμ processλ λ΄μ₯ κ°μ²΄λ‘μ νμ¬ μ€ν μ€μΈ Node.js νλ‘μΈμ€μ λν μ 보μ μ μ΄λ₯Ό μ 곡ν©λλ€. process κ°μ²΄λ₯Ό μ¬μ©νμ¬ νκ²½ λ³μ, 컀맨λ λΌμΈ μΈμ, μμ
λλ ν 리 λ±μ μ κ·Όν μ μμ΅λλ€.
μμ± | μ€λͺ
|
process.env | νμ¬ νκ²½ λ³μμ λν μ 보λ₯Ό λ΄κ³ μλ κ°μ²΄μ
λλ€. |
process.argv | νμ¬ μ€ν μ€μΈ Node.js νλ‘μΈμ€μ μ λ¬λ 컀맨λ λΌμΈ μΈμμ λ°°μ΄μ
λλ€. |
process.cwd() | νμ¬ μμ
λλ ν 리λ₯Ό λ°νν©λλ€. |
process.exit([code]) | Node.js νλ‘μΈμ€λ₯Ό μ’
λ£ν©λλ€. μ νμ μΌλ‘ μ’
λ£ μ½λλ₯Ό μ§μ ν μ μμ΅λλ€. |
process κ°μ²΄λ₯Ό μ¬μ©νμ¬ Node.js νλ‘μΈμ€λ₯Ό μ μ΄νκ³ λ€μν μ 보μ μ κ·Όν μ μμ΅λλ€.
process
os

Node.jsμ os λ΄μ₯ λͺ¨λμ μ΄μ체μ μ μνΈμμ©νκΈ° μν λ€μν κΈ°λ₯μ μ 곡ν©λλ€. μ΄ λͺ¨λμ μ¬μ©νμ¬ μ΄μ체μ μ λν μ 보λ₯Ό νμΈνκ³ , νΈμ€νΈμ λ€νΈμν¬ μΈν°νμ΄μ€λ₯Ό μ‘°ννκ³ , μμ€ν
리μμ€μ μ κ·Όν μ μμ΅λλ€.
λͺ κ°μ§ μ£Όμν os λͺ¨λμ ν¨μμ μμ±μ λ€μκ³Ό κ°μ΅λλ€
β’
os.platform(): νμ¬ μ΄μ체μ μ νλ«νΌμ λ°νν©λλ€. μλ₯Ό λ€μ΄, "win32", "darwin", "linux"μ κ°μ κ°μ λ°νν μ μμ΅λλ€.
β’
os.arch(): νμ¬ μ΄μ체μ μ μν€ν
μ²λ₯Ό λ°νν©λλ€. μλ₯Ό λ€μ΄, "x64", "arm", "ia32"μ κ°μ κ°μ λ°νν μ μμ΅λλ€.
β’
os.cpus(): μ»΄ν¨ν°μ λͺ¨λ CPU μ½μ΄μ λν μ 보λ₯Ό λ°νν©λλ€.
os
path

Node.jsμμ path λͺ¨λμ νμΌ λ° λλ ν 리 κ²½λ‘λ₯Ό μ‘°μνλ λ° μ¬μ©λ©λλ€. μ΄ λͺ¨λμ κ²½λ‘λ₯Ό μ‘°μνκ³ μ²λ¦¬νκΈ° μν λ€μν μ μ©ν κΈ°λ₯μ μ 곡ν©λλ€. λͺ κ°μ§ μ£Όμ κΈ°λ₯μ λ€μκ³Ό κ°μ΅λλ€.
β’
path.join(): μ¬λ¬ κ²½λ‘ μΈκ·Έλ¨ΌνΈλ₯Ό νλμ κ²½λ‘λ‘ κ²°ν©ν©λλ€.
β’
path.resolve(): μ£Όμ΄μ§ κ²½λ‘λ₯Ό μ λ κ²½λ‘λ‘ ν΄μν©λλ€.
β’
path.basename(): νμΌ κ²½λ‘μμ νμΌμ κΈ°λ³Έ μ΄λ¦μ κ°μ Έμ΅λλ€.
β’
path.dirname(): νμΌ κ²½λ‘μμ νμΌμ΄ μμΉν λλ ν 리 μ΄λ¦μ κ°μ Έμ΅λλ€.
β’
path.extname(): νμΌ κ²½λ‘μμ νμΌμ νμ₯μλ₯Ό κ°μ Έμ΅λλ€.
path
url

: URL κ³Ό κ΄λ ¨λ κΈ°λ₯μ μ 곡νλ node.js λ΄μ₯ λͺ¨λ
url λͺ¨λμ Node.jsμ λ΄μ₯ λͺ¨λ μ€ νλλ‘, URLκ³Ό κ΄λ ¨λ κΈ°λ₯μ μ 곡ν©λλ€. μ΄ λͺ¨λμ μ¬μ©νλ©΄ URLμ νμ±νκ³ μ‘°μνλ λ° λμμ΄ λ©λλ€. μ£Όμ κΈ°λ₯μλ URLμ νμ±νμ¬ κ΅¬μ± μμμ μ κ·Όνλ κΈ°λ₯, URLμ μ‘°μνμ¬ μλ‘μ΄ URLμ μμ±νλ κΈ°λ₯, URL λ¬Έμμ΄μ μ΄μ€μΌμ΄ννλ κΈ°λ₯ λ±μ΄ μμ΅λλ€.
url λͺ¨λμ μ¬μ©νλ €λ©΄ λ¨Όμ λͺ¨λμ κ°μ ΈμμΌ ν©λλ€. λ€μμ κΈ°λ³Έμ μΈ μ¬μ©λ²μ
λλ€.
url
dns λͺ¨λ

Node.jsμ dns λͺ¨λμ λλ©μΈ μ΄λ¦κ³Ό IP μ£Όμ κ°μ λ³ν λ° DNS(Domain Name System) μ‘°ν κΈ°λ₯μ μ 곡ν©λλ€. μ΄ λͺ¨λμ μ¬μ©νμ¬ λλ©μΈ μ΄λ¦μ IP μ£Όμλ‘ ν΄μνκ±°λ, IP μ£Όμλ₯Ό λλ©μΈ μ΄λ¦μΌλ‘ λ³νν μ μμ΅λλ€.
dns.lookup()
dns.lookup() ν¨μλ λλ©μΈ μ΄λ¦μ IP μ£Όμλ‘ ν΄μν©λλ€. μ΄ ν¨μλ₯Ό μ¬μ©νμ¬ μ£Όμ΄μ§ λλ©μΈ μ΄λ¦μ λν IP μ£Όμλ₯Ό μ»μ μ μμ΅λλ€. μλ₯Ό λ€μ΄:
dns.reverse()
dns
crypto

: μνΈν, ν΄μ, HMAC λ±μ 보μ κ΄λ ¨ μμ
μ λν κΈ°λ₯μ μ 곡ν΄μ£Όλ λ΄μ₯ λͺ¨λ
μ μ
crypto λͺ¨λμ Node.jsμμ μ 곡νλ λ΄μ₯ λͺ¨λ μ€ νλλ‘, μνΈν λ° ν΄μ κ΄λ ¨ μμ
μ μννκΈ° μν κΈ°λ₯μ μ 곡ν©λλ€. μ΄ λͺ¨λμ μ¬μ©νλ©΄ λ€μν ν΄μ μκ³ λ¦¬μ¦, μνΈν λ° λ³΅νΈν κΈ°λ₯μ νμ©ν μ μμ΅λλ€.
crypto
util
util

: Node.jsμμ λ€μν μ νΈλ¦¬ν° ν¨μλ€μ μ 곡νλ λ΄μ₯ λͺ¨λ
Promise ν¨ν΄ λ³ν, μμ, μμ λ¬Έμμ΄ μμ±, κ°μ²΄ λλ²κΉ
λ±μ κΈ°λ₯μ μ 곡ν©λλ€.
util
νμΌ μμ€ν

Node.jsμμ νμΌ μμ€ν
μ λ€λ£¨κΈ° μν΄ κΈ°λ³Έμ μΌλ‘ fs (File System) λͺ¨λμ μ¬μ©ν©λλ€. μ΄ λͺ¨λμ νμΌ μ½κΈ°, μ°κΈ°, μμ , μ΄λ, μ΄λ¦ λ³κ²½ λ± λ€μν νμΌ μμ€ν
μμ
μ μνν μ μκ² ν΄μ€λλ€.
fs
: νμΌ μμ€ν
μμ
μ μννκΈ° μν λͺ¨λ
νμΌ μμ€ν
μ΄λ²€νΈ

μ μ
μ΄λ€ μ¬κ±΄μ΄ λ°μνμμ λνλ΄λ μ νΈ
Node.jsμμ μ΄λ²€νΈλ μ΄λ²€νΈ κΈ°λ° νλ‘κ·Έλλ° λͺ¨λΈμ ν΅ν΄ μ²λ¦¬λ©λλ€. μ΄ λͺ¨λΈμ μ΄λ²€νΈ λ°μμ(Event Emitter)μ μ΄λ²€νΈ 리μ€λ(Event Listener) κ°μ μνΈ μμ©μΌλ‘ ꡬμ±λ©λλ€. μ΄λ²€νΈ λ°μμλ νΉμ μ΄λ²€νΈκ° λ°μνμμ μλ¦¬κ³ , μ΄λ₯Ό λ£κ³ μλ μ΄λ²€νΈ 리μ€λλ ν΄λΉ μ΄λ²€νΈμ λν νλμ μ μν©λλ€.
μ΄λ²€νΈ
μμΈμ²λ¦¬

μ μ
νλ‘κ·Έλ¨ μ€ν μ€μ μκΈ°μΉ μμ μν©μ΄ λ°μνμ λ μ΄λ₯Ό μ μ νκ² μ²λ¦¬νλ νλ‘κ·Έλλ°μ ν λ°©λ²
λ¬Έλ²
μμΈμ²λ¦¬
http λͺ¨λ

μ μ
Node.jsμ http λͺ¨λμ HTTP νλ‘ν μ½μ μ¬μ©νμ¬ μλ² λ° ν΄λΌμ΄μΈνΈλ₯Ό μμ±νλ λ° μ¬μ©λλ ν΅μ¬ λͺ¨λμ
λλ€. HTTP μλ²λ₯Ό λ§λ€κ³ μμ²μ μ²λ¦¬νλ©°, ν΄λΌμ΄μΈνΈλ‘λΆν° μμ²μ λ§λ€μ΄ μλ²λ‘ μ μ‘νλ λ° μ¬μ©λ©λλ€.
http λͺ¨λ

npm (Node Package Manager)
Node.js μ ν리μΌμ΄μ
μ μν ν¨ν€μ§ κ΄λ¦¬μ
Node.jsλ₯Ό μ€μΉνλ©΄ ν¨κ» μ 곡λλ©°, λ€μν ν¨ν€μ§λ₯Ό μ€μΉνκ³ κ΄λ¦¬ν μ μμ΅λλ€. npmμ Node.js μνκ³μμ μ½λλ₯Ό 곡μ νκ³ μ¬μ¬μ©νκΈ° μν ν΅μ¬ λꡬ μ€ νλλ‘, κ°λ°μκ° νλ‘μ νΈμ νμν μΈλΆ λͺ¨λμ μμ½κ² μΆκ°νκ³ κ΄λ¦¬ν μ μλλ‘ λμμ€λλ€.
npm
yarn

JavaScript νλ‘μ νΈμ μ’
μμ±μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νλ ν¨ν€μ§ λ§€λμ
Yarnμ JavaScript νλ‘μ νΈμ μ’
μμ±μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκΈ° μν ν¨ν€μ§ λ§€λμ μ
λλ€. npmκ³Ό μ μ¬νμ§λ§, μ¬λ¬ κ°μ§ μΈ‘λ©΄μμ λ λΉ λ₯΄κ³ μμ νλ©° μΌκ΄λ λ°©μμΌλ‘ ν¨ν€μ§λ₯Ό μ€μΉνλ λ±μ μ₯μ μ΄ μμ΅λλ€. Yarnμ Facebook, Google, Exponent, Tilde λ±μ κΈ°μ
κ³Ό κ°λ°μλ€μ΄ νμ
νμ¬ κ°λ°ν μ€ν μμ€ νλ‘μ νΈμ
λλ€.
yarn




