[Node.js] modules ๐Ÿ’ฏ๏ธ

jungeundelilahLEEยท2020๋…„ 12์›” 17์ผ
1

Node.js

๋ชฉ๋ก ๋ณด๊ธฐ
3/27
post-custom-banner

goal

  • Node์˜ ๊ธฐ๋ณธ ๋ชจ๋“ˆ

๐Ÿ’ฏ๏ธ ๊ธฐ๋ณธ ๋ชจ๋“ˆ๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์ค‘์š”ํ•œ ๋ชจ๋“ˆ๋“ค์€ ๋’ค์— ๋”ฐ๋กœ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค

๋…ธ๋“œ์˜ ๊ธฐ๋ณธ ๋ชจ๋“ˆ ๐Ÿ’ฏ๏ธ

๋ชจ๋“ˆ์˜ ๊ฐœ๋…

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋…๋“ค์„ ๊ทธ๋ฃนํ•‘ํ•ด๋†“์€ ๊ฐ๊ฐ์˜ ๊ฐœ๋…๋“ค
  • ๋…ธ๋“œ๋กœ ๊ฐœ๋ฐœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ด๋ฃจ๋Š” ๊ธฐ๋ณธ ์กฐ๊ฐ
  • ๊ด€๋ จ๋œ ์ฝ”๋“œ๋“ค์„ ๋ชจ์•„์„œ ์บก์Šํ™”ํ•ด๋†“์€ ๊ฒƒ / (๋ฌผ๊ฑด์„ ๋งŒ๋“ค๋•Œ ์“ฐ๋Š” ๋ถ€ํ’ˆ)

์ „์—ญ๊ฐ์ฒด

  • JS์˜ window / document ์™€ ๊ฐ™์€
  • ๋…ธ๋“œ์—์„œ๋Š” global
    • console.log(global)์„ ์ฐ์–ด๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ์Œ
    • require(โ€˜./moduleโ€™)
      global.require(โ€˜./moduleโ€™)
      ์œ„์™€ ์•„๋ž˜๋Š” ๊ฐ™์€ ์˜๋ฏธ์˜ ์ฝ”๋“œ

๋ชจ๋“ˆ ์ข…๋ฅ˜

  • ๋ชจ๋“ˆ์„ ์ž˜ ์ •๋ฆฌํ•ด ๋†“์œผ์‹  ๊ฐœ๋ฐœ์ž๋‹˜ ๋ธ”๋กœ๊ทธ๋Š” ๐Ÿ‘‰๏ธ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ 
  • ๊ธฐ๋ณธ ๋ชจ๋“ˆ์€ ๋…ธ๋“œ๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๊ธฐ๋ณธ์œผ๋กœ ์„ค์น˜๋˜๋Š” ๋ชจ๋“ˆ๋กœ์„œ ํŒŒ์ผ ์ž…์ถœ๋ ฅ, ์ด๋ฒคํŠธ ๊ด€๋ฆฌ, HTTP ํ”„๋กœํ† ์ฝœ ๊ด€๋ฆฌ ๋“ฑ์— ๊ด€ํ•œ ๋‚ด์šฉ์œผ๋กœ์จ ๋…ธ๋“œ์˜ ๋น„๋™๊ธฐ ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ
  • ํ™•์žฅ ๋ชจ๋“ˆ์€ ๋…ธ๋“œ์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ์จ ์ข€ ๋” ์‰ฌ์šด HTTP ์„œ๋ฒ„ ์ƒ์„ฑ, ๊ธฐ๋ณธ ํŒŒ์ผ ์ž…์ถœ๋ ฅ์—์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋“ฑ ๋…ธ๋“œ๋ฅผ ํ™•์žฅํ•˜๊ณ  ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ
  • ์ผ๋ฐ˜ ๋ชจ๋“ˆ์€ ๋„ค์ดํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋…ธ๋“œ์˜ ๋ชจ๋“ˆ์„ ๊ฐœ๋ฐœํ•œ ๊ฒฝ์šฐ
  • ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ์€ ๋„ค์ดํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ C/C++๋กœ ๋…ธ๋“œ์˜ ๋ชจ๋“ˆ์„ ๊ฐœ๋ฐœํ•œ ๊ฒฝ์šฐ
  • ๊ธ€๋กœ๋ฒŒ ๋ชจ๋“ˆ์€ ๊ธฐ๋ณธ ๋ชจ๋“ˆ์„ ํฌํ•จํ•˜์—ฌ ์–ด๋””์„œ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์น˜ํ•œ ํ™•์žฅ ๋ชจ๋“ˆ
  • ๋กœ์ปฌ ๋ชจ๋“ˆ์€ ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์น˜ํ•œ ํ™•์žฅ ๋ชจ๋“ˆ์ด๋‚˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋ชจ๋“ˆ
  • ๋ณตํ•ฉ ๋ชจ๋“ˆ์€ ๋‚ด๋ถ€ ๋ชจ๋“ˆ์ด๋‚˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ, ํ…œํ”Œ๋ฆฟ, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋“ฑ์„ ํฌํ•จํ•˜๋Š” ๋ชจ๋“ˆ

require() ๋ฉ”์†Œ๋“œ์™€ module.exports

  • HTML ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๋ช…์‹œ๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋“ค์€, ์›น ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด ๋กœ๋”ฉ๋˜๋ฉฐ ์„œ๋กœ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ํ˜ธ์ถœ /
  • ํ•˜์ง€๋งŒ, ๋…ธ๋“œ๋Š” HTML์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์„œ๋กœ ๋‹ค๋ฅธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋“ค์ด ์„œ๋กœ ์ฐธ์กฐํ•˜๊ณ  ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”
  • require() ๋ฉ”์†Œ๋“œ๋Š” ๋ชจ๋“ˆ ์‹๋ณ„์ž์ธ module.exports๋ฅผ ์ด์šฉํ•ด ๋ชจ๋“ˆ์ด ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜๋‚˜ ๊ฐ์ฒด ๋“ฑ์„ ๋ฐ˜ํ™˜
  • ๋งŒ์•ฝ ๋ถˆ๋Ÿฌ์˜จ ๋ชจ๋“ˆ์ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋ฉด ๊ทธ ๋ชจ๋“ˆ๋„ ๊ฐ™์ด ๋กœ๋“œ
  • ๋…ธ๋“œ์—์„œ ํ•˜๋‚˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์€ ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ์ด ๋  ์ˆ˜ ์žˆ๋‹ค
  • ์ด๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ๋‚ด๋ถ€์—์„œ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜๋ฅผ module.exports์— ํ• ๋‹นํ•˜๋ฉด ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ
  • ์ฆ‰, ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ์—์„œ๋Š” require() ๋ฉ”์†Œ๋“œ๋กœ ๋‹ค๋ฅธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€์„œ module.exports๋กœ ํ—ˆ์šฉ๋œ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

(๋งŽ์ด ์“ฐ์ด๋Š”) ์ „์—ญ ๊ฐ์ฒด : global

  • console ๊ฐ์ฒด (์ „์ฒด ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •๋ฆฌํ•œ API๋ฌธ์„œ)
  • Process ๊ฐ์ฒด (์ „์ฒด ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •๋ฆฌํ•œ API๋ฌธ์„œ)
    • ์†์„ฑ
      • process.argv: ํ”„๋กœ๊ทธ๋žจ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ •๋ณด
      • process.env : ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด
      • process.version : Node.js์˜ ๋ฒ„์ „
      • process.versions : Node.js ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ๋“ค์˜ ๋ฒ„์ „
      • process.arch : ํ”„๋กœ์„ธ์„œ์˜ ์•„ํ‚คํ…์ฒ˜
      • process.platform : ํ”Œ๋žซํผ์˜ ์ •๋ณด
    • ๋ฉ”์†Œ๋“œ
      • process.exit() : ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
      • process.memoryUsage() : ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์ •๋ณด
      • process.uptime() : ํ˜„์žฌ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋œ ์‹œ๊ฐ„
  • Exports ๊ฐ์ฒด
    • ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Œ
    • exports ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด double๊ณผ plus ๊ฐ™์ด ๋‚ด๊ฐ€ ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ , ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋‹ค๋ฅธ js ํŒŒ์ผ์—์„œ require() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด js ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
	// test.js
	exports.double = function(r) {
    	  return r * r;
	};
	exports.plus = function(r) {
	  return r + r;
	};
	////////////////////////////////////
	const caculator = require('./test.js');
	console.log('Double value is '+ caculator.double(3));
	console.log('Plus value is ' + caculator.plus(3));

os๋ชจ๋“ˆ

  • ์šด์˜์ฒด์ œ์™€ ์‹œ์Šคํ…œ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ

Utility ๋ชจ๋“ˆ

  • node.js์˜ ๋ณด์กฐ์ ์ธ ๊ธฐ๋Šฅ ์ค‘ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ๋งŒ์„ ๋ชจ์•„๋†“์€ ๋ชจ๋“ˆ
  • (๋ชจ๋“  ๋ฉ”์†Œ๋“œ API)
    • util.format(format, [...]) : console.log() ๋ฉ”์†Œ๋“œ์™€ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์ด์ง€๋งŒ console.log()๋Š” ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ณ  util.format์€ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. printf์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ฒซ ์•„๊ทœ๋จผํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํฌ๋งทํŒ…๋œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋ ˆ์ด์Šค ํ™€๋”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•„๊ทœ๋จผํŠธ์˜ ๊ฐ’์œผ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.
      • %s : ๋ฌธ์ž์—ด
      • %d : ์ˆซ์ž(์ •์ˆ˜๋ถ€ํ„ฐ ์†Œ์ˆ˜๊นŒ์ง€ ํ‘œํ˜„ ๊ฐ€๋Šฅ)
      • %j : JSON
      • % : ํผ์„ผํŠธ ๊ธฐํ˜ธ('%'). ์ด ๊ธฐํ˜ธ๋Š” ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • util.debug(string) : ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๊ณ  ์ฆ‰๊ฐ์ ์œผ๋กœ string์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • util.log(string) : ํƒ€์ž„์Šคํƒฌํ”„ ์‹œ๊ฐ„๊ณผ ํ•จ๊ป˜ string์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • util.isArray(object) : ์ฃผ์–ด์ง„ object๊ฐ€ Array์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
    • util.isRegExp(object) : ์ฃผ์–ด์ง„ object๊ฐ€ RegExp์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
    • util.isDate(object) : ์ฃผ์–ด์ง„ object๊ฐ€ Date์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
    • util.isError(object) : ์ฃผ์–ด์ง„ object๊ฐ€ Error์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

File System ๋ชจ๋“ˆ

  • ํŒŒ์ผ ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ๋œ ์ž‘์—…์„ ํ•˜๋Š” ๋ชจ๋“ˆ
  • ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฝ์œผ๋ฉด ํŒŒ์ผ์„ ์ฝ์œผ๋ฉด์„œ ๋‹ค๋ฅธ ์ž‘์—…๋„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ , ํŒŒ์ผ์„ ๋‹ค ์ฝ์œผ๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜ callback์œผ๋กœ ์ „๋‹ฌํ•œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋™ด
  • ๋น„๋™๊ธฐ ํ˜•์‹์€ ํ•ญ์ƒ ๋งˆ์ง€๋ง‰ ์ธ์ˆ˜๊ฐ€ ์ˆ˜ํ–‰ ์™„๋ฃŒ ์‹œ ํ˜ธ์ถœํ•  ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ์ž‘์„ฑ๋˜์–ด์•ผ ํ•จ
  • [options]์—๋Š” ๋ณดํ†ต ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์“ฐ๋ฉฐ, ์›น์—์„œ๋Š” UTF-8์„ ์ฃผ๋กœ ์‚ฌ์šฉ
  • (๋ชจ๋“  ๋ฉ”์†Œ๋“œ API)
    • fs.readFile(filename, [options], callback) : filename์˜ ํŒŒ์ผ์„ [options]์˜ ๋ฐฉ์‹์œผ๋กœ ์ฝ์€ ํ›„ callback์œผ๋กœ ์ „๋‹ฌ๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. (๋น„๋™๊ธฐ์ )
    • fs.readFileSync(filename, [options]) : filename์˜ ํŒŒ์ผ์„ [options]์˜ ๋ฐฉ์‹์œผ๋กœ ์ฝ์€ ํ›„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.(๋™๊ธฐ์ )
    • fs.writeFile(filename, data, [options], callback) : filename์˜ ํŒŒ์ผ์— [options]์˜ ๋ฐฉ์‹์œผ๋กœ data ๋‚ด์šฉ์„ ์“ด ํ›„ callback ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.(๋น„๋™๊ธฐ์ )
    • fs.writeFileSync(filename, data, [options]) : filename์˜ ํŒŒ์ผ์— [options]์˜ ๋ฐฉ์‹์œผ๋กœ data ๋‚ด์šฉ์„ ์”๋‹ˆ๋‹ค.(๋™๊ธฐ์ )
  • ๋™๊ธฐ์  ๋ฐฉ์‹ - ํŒŒ์ผ์ฝ๊ธฐ์™€ ์—๋Ÿฌ์ฒ˜๋ฆฌ
try {
  var data = fs.readFileSync('notexist.txt', 'utf8'); 
  console.log(data);
} catch (err) {
  console.log(err);
}
  • ๋น„๋™๊ธฐ์  ๋ฐฉ์‹ - ํŒŒ์ผ์ฝ๊ธฐ์™€ ์—๋Ÿฌ์ฒ˜๋ฆฌ
fs.readFile('notexist.txt', 'utf8', function(err, data) {
  if (err) {
    console.log(err); // ์ฝ๊ธฐ ์‹คํŒจ
  } else {
    console.log(data); // ์ฝ๊ธฐ ์„ฑ๊ณต
  }
});

Event ๋ชจ๋“ˆ

  • require() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋กœ๋“œํ•˜๊ณ , ๊ทธ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด EventEmitter ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉ
  • (๋ชจ๋“  ๋ฉ”์†Œ๋“œ API)
    • emitter.addListener(event, listener) : on() ๋ฉ”์†Œ๋“œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค.
    • emitter.on(event, listener) : addListener()๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค.
    • emitter.once(event, listener) : ์ด๋ฒคํŠธ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์—ฐ๊ฒฐํ•œ ํ›„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    • emitter.removeListener(event, listener) : ํŠน์ • ์ด๋ฒคํŠธ์˜ ํŠน์ • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฆฌ์Šค๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋ฆฌ์Šค๋„ˆ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๊ฐ€ ๊ฐฑ์‹ ๋˜๋‹ˆ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • emitter.removeAllListeners([event]) : ๋ชจ๋“  ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    • emitter.setMaxListeners(n) : n์œผ๋กœ ํ•œ ์ด๋ฒคํŠธ์— ์ตœ๋Œ€ํ—ˆ์šฉ ๊ฐœ์ˆ˜๋ฅผ ์ •ํ•ด์ค๋‹ˆ๋‹ค. node.js๋Š” ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ•œ ์ด๋ฒคํŠธ์— 10๊ฐœ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, 11๊ฐœ ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด n๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. n๊ฐ’์œผ๋กœ 0์„ ๋„˜๊ฒจ ์ฃผ๋ฉด ์—ฐ๊ฒฐ ๊ฐœ์ˆ˜ ์ œํ•œ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
    • emitter.emit(eventName[, ...args]) : ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

์ƒ์†

  • in JS
function Foo() {
    // ์ฝ”๋“œ
}
Foo.prototype = {
  bar: function() {
    console.log('Foo_bar ์‹คํ–‰');
  }
};

function Bar() {
}
Bar.prototype = Object.create(Foo.prototype);
Bar.prototype.baz = function() {
    console.log('Bar_baz ์‹คํ–‰');
};

Foo.prototype.bar();
Bar.prototype.bar();
Bar.prototype.baz();
  • in Node : util.inherits() ๋ฉ”์†Œ๋“œ
var util = require('util');

function Bar() {
}

util.inherits(Bar, Foo);

Bar.prototype.baz = function() {
  console.log('Bar_baz ์‹คํ–‰');
};

Foo.prototype.bar();
Bar.prototype.bar();
Bar.prototype.baz();


์ถœ์ฒ˜ : https://degurii.tistory.com/88 ๐Ÿ’š๏ธ

profile
delilah's journey
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€