๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ปWEB BackEnd/node.js

๋…ธ๋“œ์˜ ๋ชจ๋“ˆ

 

๋…ธ๋“œ๋Š” ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด ๋ชจ๋“ˆ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋„๋ก ํ•˜๊ณ  ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์ปจ์…‰์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ตฌ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ชจ๋“ˆ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ด๋ฃจ๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ, ๋ณดํ†ต ๋‹ค์ˆ˜์˜ ํด๋ž˜์Šค์™€ ์ด๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•œ ๊ฐ์ฒด ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

 


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

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

 

 

๋ชจ๋“ˆ ์‹๋ณ„์ž

๋…ธ๋“œ์˜ ๋ชจ๋“ˆ ์ด๋ฆ„์œผ๋กœ๋Š” ํ™•์žฅ์ž ์—†๋Š” ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ชจ๋“ˆ์€ ํŒŒ์ผ๊ณผ ์ผ๋Œ€์ผ๋กœ ๋Œ€์‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— .js๋‚˜ .node๋ผ๋Š” ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง€์ง€๋งŒ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ๋“ค์ผ ๋•Œ๋Š” ํŒŒ์ผ ์ด๋ฆ„๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋ชจ๋“ˆ์˜ ์‹๋ณ„์ž๋Š” ํฌ๊ฒŒ ์ƒ๋Œ€์  ์‹๋ณ„์ž์™€ ์ ˆ๋Œ€์  ์‹๋ณ„์ž, ๊ทธ๋ฆฌ๊ณ  ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ ์‹๋ณ„์ž ๋“ฑ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

1) ์ƒ๋Œ€์  ์‹๋ณ„์ž

require('./sample_module');
  • ํ˜„์žฌ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒ๋Œ€์ ์ธ ๊ธฐ์ค€์— ์žˆ๋Š” ๋ชจ๋“ˆ์„ ์ฐพ๋Š” ์‹๋ณ„์ž
  • ./๋ฅผ ์ƒ๋žตํ•˜๋ฉด ํ˜„์žฌ ์œ„์น˜์—์„œ ๋ชจ๋“ˆ์„ ์ฐพ์ง€ ์•Š์œผ๋‹ˆ ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

2) ์ ˆ๋Œ€์  ์‹๋ณ„์ž

require('/usr/local/node_modules/sample_module/sample_module');
  • ์ ˆ๋Œ€ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทธ ๊ฒฝ๋กœ์— ๋งž๋Š” ๋ชจ๋“ˆ์„ ์ฐพ๋Š” ์‹๋ณ„์ž

3) ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ ์‹๋ณ„์ž

require('sample_module');
  • ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“ˆ ์ด๋ฆ„๋งŒ ์ž…๋ ฅํ•˜๋ฉด ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ ์‹๋ณ„์ž๋กœ ์ธ์‹ํ•˜๊ณ  ์„ค์น˜๋œ ์ „์ฒด ํ™•์žฅ ๋ชจ๋“ˆ์ด๋‚˜ ๊ธฐ๋ณธ ๋ชจ๋“ˆ ์ค‘์—์„œ ํ•ด๋‹น ๋ชจ๋“ˆ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋กœ๋“œํ•œ๋‹ค.
  • ๋งŒ์•ฝ sample_module์ด๋ผ๋Š” ๋ชจ๋“ˆ์ด ๊ธฐ๋ณธ๋ชจ๋“ˆ์—์„œ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๋ชจ๋“ˆ์ด๋ผ๋ฉด ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ํƒ์ƒ‰ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

require()์™€ module.exports

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

ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ๋‚ด๋ถ€์—์„œ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜๋ฅผ module.exports์— ํ• ๋‹นํ•˜๋ฉด ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค๋ฉด,

  1. B.js๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋œ ๋ชจ๋“ˆ์ด๋‹ค. ์ด ๋ชจ๋“ˆ์€ name์ด๋ผ๋Š” ๋ณ€์ˆ˜์™€ run(), stop()์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  2. A.js๋Š” ์ด๋Ÿฌํ•œ ๋ชจ๋“ˆ B๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ด๋‹ค. ์ด ํŒŒ์ผ์—์„œ moduleA๋ผ๋Š” ๊ฐ์ฒด๋Š” require() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๋ชจ๋“ˆ B์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.
  3. B.js์—์„œ๋Š” module.exports๋ฅผ ํ†ตํ•ด run()๊ณผ stop() ๋ฉ”์†Œ๋“œ๋ฅผ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ A.js์—์„œ moduleB๋ฅผ ํ†ตํ•ด run()๊ณผ stop() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ๋„ ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

๋‹ค์‹œ ๋งํ•ด, ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ์—์„œ๋Š” require() ๋ฉ”์†Œ๋“œ๋กœ ๋‹ค๋ฅธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€์„œ module.exports๋กœ ํ—ˆ์šฉ๋œ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

 

'๐Ÿ’ปWEB BackEnd > node.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋…ธ๋“œ์˜ ์ „์—ญ๊ฐ์ฒด์™€ ์ „์—ญ ๋ณ€์ˆ˜  (0) 2021.01.07