elice/WIL

[week_06] Node.js ๊ธฐ์ดˆ | NPM์˜ ์ดํ•ด, NPX, Node.js์˜ ๋ชจ๋“ˆ, ES Module

1. NPM์ด๋ž€

  • Node Package Manager
  • Node.js ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ•„์ˆ˜์ ์ธ ๋„๊ตฌ
  • ๊ตฌ์„ฑ: ์˜จ๋ผ์ธ ์ €์žฅ์†Œ + ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ
    • ์˜จ๋ผ์ธ ์ €์žฅ์†Œ: ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋„๊ตฌ๋“ค์ด ์—…๋กœ๋“œ๋˜๋Š” ์ €์žฅ์†Œ
    • ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ: ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด ์ œ๊ณต

 

2. NPM ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ

  • NPM์˜ ์‚ฌ์šฉ = NPM ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ตํžˆ๋Š” ๊ฒƒ
  • ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์—์„œ $npm init ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช‡ ๋ฒˆ์˜ ์งˆ๋ฌธ์„ ํ†ตํ•ด package.json ์ด๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ฃผ๊ณ , ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” Node.js ํ”„๋กœ์ ํŠธ๊ฐ€ ๋œ๋‹ค.

2-1. package.json

  • ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ์ •๋ณด๋“ค์ด ์ €์žฅ๋˜๋Š” ํŒŒ์ผ, ์ด ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ npm ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • version, name, description, scripts, dependencies(์˜์กด์„ฑ ํŒจํ‚ค์ง€๋“ค), devDependencies, ...
  • NPM์„ ์ด์šฉํ•˜๋ฉด ์˜์กด์„ฑ์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  •  
  • ์˜์กด์„ฑ: ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ์˜ ๋ฌถ์Œ, Node.js์—์„œ๋Š” ํŒจํ‚ค์ง€๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

2-2. npm install ๋ช…๋ น์–ด

  • $npm install (npm i) ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์˜์กด์„ฑ ์ถ”๊ฐ€, ์˜์กด์„ฑ ๋‚ด๋ ค๋ฐ›๊ธฐ, ๊ฐœ๋ฐœ์šฉ ์˜์กด์„ฑ ์ถ”๊ฐ€, ์ „์—ญ ํŒจํ‚ค์ง€ ์ถ”๊ฐ€ ๋“ฑ์˜ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰
  • $npm install [package-name]
    • ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ถ”๊ฐ€๋œ ํŒจํ‚ค์ง€๋Š” package.json์˜ dependencies์•ˆ์— ์ถ”๊ฐ€๋˜๋ฉฐ, node_modules ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋จ
  • $npm install [package-name] --save-dev
    • npm์€ ๊ฐœ๋ฐœ์šฉ ์˜์กด์„ฑ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    • --save-dev ์˜ต์…˜์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์šฉ ์˜์กด์„ฑ(๋ฐฐํฌ ์ „๊นŒ์ง€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์˜์กด์„ฑ)์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐœ๋ฐœ์šฉ ์˜์กด์„ฑ์€ package.json์˜ devDependencies์— ์ถ”๊ฐ€๋จ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ node_modules ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์ฝ”๋“œ ๊ด€๋ฆฌ์™€ ๋ฐฐํฌ ์‹œ์— ์—…๋กœ๋“œ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ์˜์กด์„ฑ์ด ๋งŽ์•„์ง€๋ฉด ์šฉ๋Ÿ‰์ด ๋„ˆ๋ฌด ์ปค์ง€๊ณ , OS๋ณ„๋กœ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌ
  • $npn install ๋ช…๋ น์–ด๋ฅผ ์•„๋ฌด ์˜ต์…˜ ์—†์ด ์‚ฌ์šฉํ•˜๋ฉด, package.json์— ์ •์˜๋œ dependencies์™€ devDependencies์˜ ์˜์กด์„ฑ์„ node_modules ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‚ด๋ ค๋ฐ›์Œ
  • $npm install --production
    • ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌํ•  ๋•Œ์—๋Š” ๊ฐœ๋ฐœ์šฉ ์˜์กด์„ฑ์„ ๊ฐ™์ด ํฌํ•จํ•  ํ•„์š”๊ฐ€ ์—†์Œ
    • package.json์˜ dependencies๋งŒ node_modules์— ๋‚ด๋ ค๋ฐ›์Œ
  • $npm install [package-name]@version
    • ํŒจํ‚ค์ง€ ๋ฒ„์ „ ์ง€์ •
  • package-lock.json
    • ํ”„๋กœ์ ํŠธ์— ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ
    • ์˜์กด์„ฑ ๋ฒ„์ „์ด ๊ฐ‘์ž๊ธฐ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ์„ค์น˜๋œ ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜๋Š” ์—ญํ• 
  • $npm install [package-name] --global
    • ํŒจํ‚ค์ง€๋ฅผ ์ „์—ญ ํŒจํ‚ค์ง€ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‚ด๋ ค๋ฐ›์Œ
    • ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ๋“ค์„ ์ฃผ๋กœ ์ „์—ญ ํŒจํ‚ค์ง€๋กœ ์ถ”๊ฐ€ํ•ด์„œ ์‚ฌ์šฉ

2-3. ๋กœ์ปฌ ํŒจํ‚ค์ง€์™€ ์ „์—ญ ํŒจํ‚ค์ง€

  • ๋กœ์ปฌ ํŒจํ‚ค์ง€: package.json์— ์„ ์–ธ๋˜์–ด ์žˆ๊ณ , node_modules์— ์ €์žฅ๋œ ํŒจํ‚ค์ง€
  • ์ „์—ญ ํŒจํ‚ค์ง€: npm install -g๋ฅผ ํ†ตํ•ด ๋‚ด๋ ค๋ฐ›์•„, ์ „์—ญ ์ €์žฅ์†Œ์— ์ €์žฅ๋œ ํŒจํ‚ค์ง€
  • ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ์ด package.json ๋‚ด์— ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์˜ ์ข‹์€ ๋ฐฉํ–ฅ

2-4. $npm remove

  • $npm remove [package-name]
    • ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
    • package.json์˜ dependencies์™€ devDependencies์—์„œ ์‚ญ์ œํ•˜๊ณ , node_modules์—์„œ๋„ ์‚ญ์ œ

2-5. ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ

  • ์Šคํฌ๋ฆฝํŠธ: ๊ฐ„๋‹จํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ
  • package.json์˜ scripts์— ์„ ์–ธ๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ npm run [script-name] ๋ช…๋ น์–ด๋กœ ์‹คํ–‰
  • npm script ๋‚ด์—์„œ๋Š” ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2-6. ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ

  • npm test: ์ฝ”๋“œ ์œ ๋‹› ํ…Œ์ŠคํŠธ ๋“ฑ์— ์‚ฌ์šฉ
  • npm start: ํ”„๋กœ์ ํŠธ ์‹คํ–‰
  • npm stop: ํ”„๋กœ์ ํŠธ ์ข…๋ฃŒ

2-7. NPM ์š”์•ฝ

๋ช…๋ น์–ด npm init ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
npm install ์˜์กด์„ฑ ์ถ”๊ฐ€, ์„ค์น˜
npm remove ์˜์กด์„ฑ ์‚ญ์ œ
npm run ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
์ฃผ์š” ํŒŒ์ผ/๋””๋ ‰ํ„ฐ๋ฆฌ node_modules ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ ์ €์žฅ ๋””๋ ‰ํ„ฐ๋ฆฌ
package.json ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ (๋ฒ„์ „, ์˜์กด์„ฑ, ์Šคํฌ๋ฆฝํŠธ, ...)
package-lock.json ์˜์กด์„ฑ ๋ฒ„์ „ ํ™•์ธ

 

3. NPX

  • npm ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ
  • ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ „์—ญ ํŒจํ‚ค์ง€๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ , npx๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
  • Node.js์˜ ํŠน์ • ๋ฒ„์ „์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํ”„๋กœ์ ํŠธ์˜ Node.js ๋ฒ„์ „๋ณ„ ์‹คํ–‰ํ™˜๊ฒฝ์„ ํ™•์ธํ•  ๋•Œ ์œ ์šฉ
  • gitbub gist ์ฝ”๋“œ ์‹คํ–‰ ๊ฐ€๋Šฅ

 

4. Node.js์˜ ๋ชจ๋“ˆ

  • ๋ชจ๋“ˆ(Module) = ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•
  • ํŒจํ‚ค์ง€ = ๋ชจ๋“ˆ์˜ ๋ชจ์Œ
  • npm ํŒจํ‚ค์ง€๋“ค์€ ๋งŽ์€ ๋ชจ๋“ˆ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ ๋ชจ์Œ
  • Node.js์˜ ๊ธฐ๋ณธ ์ œ๊ณต ๋ชจ๋“ˆ

4-1. Node.js์˜ ๊ธฐ๋ณธ ์ œ๊ณต ๋ชจ๋“ˆ

  •  console
    • log, warn, error ํ•จ์ˆ˜๋กœ ๋กœ๊ทธ ๋ ˆ๋ฒจ ํ‘œ์‹œ
    • time, timeLog, timeEnd ํ•จ์ˆ˜๋กœ ์‹œ๊ฐ„ ์ถ”์ 
  • process
    • ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ๊ธฐ๋Šฅ ์ œ๊ณต
    • ์‹คํ–‰ ํ™˜๊ฒฝ ๋ฐ ๋ณ€์ˆ˜ ๊ด€๋ จ ๊ฐ’ ์ œ๊ณต (arch, argv, env ๋“ฑ)
    • ํ”„๋กœ์„ธ์Šค ๋™์ž‘ ๊ด€๋ จ ํ•จ์ˆ˜ ์ œ๊ณต (abort, kill, exit ๋“ฑ)
  • fs
    • ํŒŒ์ผ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•ด ์‚ฌ์šฉ
    • readFile, writeFile ํ•จ์ˆ˜๋กœ ํŒŒ์ผ ์ฝ๊ธฐ, ์“ฐ๊ธฐ
    • -Sync ํ•จ์ˆ˜๋กœ ๋™๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
    • watch๋กœ ํŒŒ์ผ/๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ ๊ฐ์ง€
  • http
    • http ์„œ๋ฒ„, ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ
    • createServer ํ•จ์ˆ˜๋กœ ์„œ๋ฒ„ ์ƒ์„ฑ
    • Request ํ•จ์ˆ˜๋กœ http ์š”์ฒญ ์ƒ์„ฑ
  • ๊ธฐํƒ€: url, os, Path, crypto, ...

 

5. ๋ชจ๋“ˆ์˜ ์ž‘์„ฑ๊ณผ ์‚ฌ์šฉ

5-1. ๋ชจ๋“ˆ์˜ ์ž‘์„ฑ

module.exports = { 
	name,
    age,
    nationality,
};
  • ๋ชจ๋“ˆ์ด load ๋  ๋•Œ ์‚ฌ์šฉ๋  ๊ฐ’์„ module.exports๋กœ ๋‚ด๋ณด๋‚ธ๋‹ค.
exports.name = name;
exports.age = age;
exports.nationality = nationality;
  • ๋ชจ๋“ˆ์„ object๋กœ ๋งŒ๋“ค๊ณ , ๊ฐ key-value๋ฅผ ์ง€์ •ํ•ด์„œ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
module.exports = (name, age, nationality) => {
	return {
    	name,
        age,
        nationality,
    };
}
  • ๋ชจ๋“ˆ์„ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด์„œ ๋ชจ๋“ˆ ์‚ฌ์šฉ ์‹œ์— ๊ฐ’์„ ์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

5-2. ๋ชจ๋“ˆ์˜ ์‚ฌ์šฉ

  • require ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ์„ load
  • ์˜์กด์„ฑ ํŒจํ‚ค์ง€, ์ง์ ‘ ์ž‘์„ฑํ•œ ๋ชจ๋“ˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • requireํ•  ๋•Œ ๋ชจ๋“ˆ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค. Node.js์˜ ๋ชจ๋“ˆ์€ ์ฒซ require ์‹œ์— ์‹คํ–‰ ํ›„, ๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— cache๋œ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ๋˜ require ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ชจ๋“ˆ์ด ๋‘ ๋ฒˆ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“ˆ ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•จ์ˆ˜ํ˜• ๋ชจ๋“ˆ๋กœ ์ž‘์„ฑ

1) npm ํŒจํ‚ค์ง€

const dayjs = require('dayjs');
console.log(dayjs());
  • ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋“ค์€ require('package-name') ๋กœ load ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด node_modules ์— ๋‚ด๋ ค๋ฐ›์•„์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

2) ์ง์ ‘ ์ž‘์„ฑํ•œ ๋ชจ๋“ˆ

const myModule = require('./my-module');
console.log(myModule);
  • ์ง์ ‘ ์ž‘์„ฑํ•œ ๋ชจ๋“ˆ์€ ํ˜„์žฌ ์ž‘์„ฑ์ค‘์ธ ํŒŒ์ผ๊ณผ์˜ ์ƒ๋Œ€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ load
  • my-module์ด .js ํŒŒ์ผ์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ํŒŒ์ผ load
  • my-module์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์ธ ๊ฒฝ์šฐ my-module/index.js ํŒŒ์ผ์ด load

3) ํ•จ์ˆ˜ํ˜• ๋ชจ๋“ˆ

const myFunctionModule = require('./my-function-module');
console.log(myFunctionModule(name, age, nationality));
  • ํ•จ์ˆ˜ํ˜• ๋ชจ๋“ˆ์€ loadํ•œ ๊ฒฝ์šฐ ๋ชจ๋“ˆ์ด ๋ฐ”๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ํ•„์š”ํ•œ ์‹œ์ ์— load๋œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

4) json ํŒŒ์ผ

// my-data.json์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
const myData = require('./my-data');
console.log(myData);
  • object๋กœ ์ž๋™ ํŒŒ์‹ฑ
โœจ ์š”์•ฝ
module.exports๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
require๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜์กด์„ฑ ํŒจํ‚ค์ง€, ๋ชจ๋“ˆ, json ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ชจ๋“ˆ์€ ์ฒซ require ์‹œ์—๋งŒ ์‹คํ–‰ํ•˜๊ณ  cache ๋˜๋ฏ€๋กœ, ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•  ๋ชจ๋“ˆ์€ ํ•จ์ˆ˜ํ˜•์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

6. ES Module

  • ES6์—์„œ ๋“ฑ์žฅํ•œ JavaScript์˜ ๊ณต์‹์ ์ธ ํ‘œ์ค€ ๋ชจ๋“ˆ
  • ES Module๊ณผ commonjs(Node.js์˜ ๋ชจ๋“ˆ)๋Š” ๋ฌธ๋ฒ•๊ณผ ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘ ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋‹ค.
  • commonjs๋Š” module.exports์™€ require๋กœ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ
  • ES Module์€ export์™€ import๋กœ ๋ชจ๋“ˆ์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ
  • ํ˜„์žฌ ES Module์€ Node.js์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ œ์•ฝ์ด ๋งŽ๋‹ค.