본문 바로가기
관리자

Programming-[Backend]/Node.js & Server

nodejs / 모듈 / node.js 모듈 기초

728x90
반응형

 

1. 모듈이란?

 

Nodejs 환경에서 Javascript를 사용하면, 브라우저를 이용할 때에 비해서 훨씬 더 다채로운 작업들을 할 수 있다. 여러가지 작업들을 위해서 '기능별로 미리 만들어 놓은 코드' 가 있는데, 이것들을 모듈이라고 한다. node.js 자체에 포함된 내장모듈들의 list는 참조1) 에서 확인할 수 있다.

 

 

 


 

 

2. 모듈 사용법

 

브라우저에서 모듈을 사용하기 위한 방법은 아래와 같다.

 

1
<script src="불러오고싶은_스크립트.js"></script>
cs

 

 

node.js 에서는 코드 상단에 require 구문을 사용하여 모듈을 불러온다.

 

1
2
const fs = require('fs')
const dns = require('dns'
cs

 

 

node.js에서 공식적으로 제공하지 않는 3rd-party 모듈을 사용하기 위해서는 다음과 같은 명령어를 통해 사용한다.

(대괄호 [] 제외)

 

npm install [name of 3rd party module]

 


 

 

3. 모듈 생성, export, require, nodejs 실행

 

직접 모듈을 작성하고, export를 통해서 다른 코드 파일에서 해당 모듈을 사용할 수 있다. 모듈을 생성하는 방법은 다음과 같이 2가지가 있다. (참조2)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 1. exports에 직접 프로퍼티를 설정
exports.add = function(a, b){
    return a + b;
}
 
exports.multiply = function(a, b){
    return a * b;
}
 
 
// 2.  새로운 객체에 프로퍼티를 설정 후 module.export로 내보내기
var calc = {};
 
calc.add = function(a, b){
    return a + b;
}
 
calc.multiply = function(a, b){
    return a * b;
}
 
module.exports = calc;
cs

 

 

모듈을 불러오는 방법은 앞서 설명한 바와 같이 require 함수를 호출하면 된다.

파일 경로 앞에 './'를 붙여주어 상위 폴더로 이동 후 해당 파일을 조회해주어야 하고, 확장자인 .js를 생략해도 된다.

1
2
3
var calc = require("./calc");
 
console.log(calc.add(35));
cs

 

 

실제 모듈의 실행은 "node 파일명.js"로 실행한다.

require 전에 작성한 모듈을 어떻게 내보내는지(export) 모듈을 실행하여 알아보자.

 

 

1. 객체와 그 속성(메소드)을 export 하는 경우

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 1. test.js 파일
let calc = {};
calc.add = function(a, b){
    return a + b;
}
calc.multiply = function(a, b){
    return a * b;
}
 
let itself = {};
itself.print = (self) => {
  return self;
}
 
module.exports = {
  adding : calc.add,
  it : itself.print
}
 
 
//2. test2.js 파일
const test = require('./test');
 
console.log(test.adding(2,3))
console.log(test.it(10))
cs

 

test1.js : 객체 생성 후 export

test1.js 파일에서 calc, itself 라는 객체를 정의하고, 각 add,multiply 와 print 속성을 추가해줬다. 여러 객체를 한 번에 내보내야 하므로, module.exports에 "adding, it"라는 객체를 지정하여 할당해주었다.

 

test2.js : require문으로 객체 받아오기

test2.js 파일에서는 require(file path)를 입력하여 module.exports 객체를 test라는 변수에 할당해주었다.

그리고 console.log를 통해 값이 정상적으로 출력되는 것을 확인하였다.

 

위와는 다른 형식으로, 객체가 아닌 각 함수들을 선언하고, 함수의 앞에 exports를 개별적으로 붙여주는 방식도 가능하다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
// 1. test.js 파일
exports.add = function(a, b){
    return a + b;
}
exports.multiply = function(a, b) {
    return a * b;
}
 
// 2. test2.js 파일
const test = require('./test');
console.log(test.add(2,3))
 
cs

 

2. Module.exports와 exports의 차이

 

module.exports는 해당 구문 위에 작성된 코드를 module.exports라는 객체에 해시 형태로 담는 방식이다. 따라서, module.exports를 여러 번 선언하면 마치 변수에 객체를 할당하는 것처럼 마지막에 지정한 변수에 module.exports의 값이 할당된다. 

 

exports는 module.exports의 alias(별칭)인데, module.exports와 같은 주소를 가리키므로 중복 적용하거나 덮어쓰지 않도록 주의하여야 한다.

 


 

예제

 

1
2
3
4
5
6
7
8
9
 
// 1. test.js 파일
let a = 10;
exports.a = 20;
module.exports.a = 30;
 
// 2. test2.js 파일
let practice = require('./test.js')
console.log(practice)
cs

 

test2.js 파일을 node test2.js 명령어로 실행하면, "{a : 30} " 이라는 결과가 나오게 된다.

 

 

 

 


 

 

참조

 

1. nodejs 공식문서의 index

nodejs.org/dist/latest-v12.x/docs/api/

 

2. blog

victorydntmd.tistory.com/16

728x90
반응형

'Programming-[Backend] > Node.js & Server' 카테고리의 다른 글

nodejs / 모듈 / fs.readFile  (0) 2020.10.01
Node.js / 기초 / NVM, NPM, package.json  (0) 2020.08.31