Study/Node.js

[노드JS] 더하기 함수를 모듈로 간단히 분리하기

AC 2019. 3. 9. 15:40



ch02_test4.js 파일을 만든 후 다음 코드를 입력해보자.





var calc = {};

calc.add = function(a, b) {

    return a + b;

}


console.log('모듈로 분리하기 전 - calc.add 함수 호출 결과 : %d', calc.add(10, 10));





calc 객체를 하나 만든 후 그 객체에 add 속성을 추가하고 더하기 함수를 할당했따. 이렇게 만든 함수는 calc.add()와 같은 형태로 호출할 수 있다.


이 코드 중에서 더하기 함수를 속성으로 추가했던 calc 객체를 별도의 파일로 분리하면 모듈 파일이 만들어진다.

먼저 더하기 함수에 해당하는 코드를 새로 만든 파일에 넣은 후 약간 수정해야 한다.


프로젝트에 새로운 자바스크립트 파일 calc.js를 추가한 후 다음 코드를 입력해보자.






이렇게 하면 더하기 함수는 exports 객체에 add 속성이 추가된다. 메인 파일에서 이 파일을 모듈로 불러들이면 add 함수를 호출하여 사용할 수 있다. 이제 이 모듈 파일을 불러들여 사용하는 파일을 만들어보자.


ch02_test5.js 파일을 새로 만들고 다음 코드를 입력한다.





이렇게 만든 ch02_test5.js 파ㅣㅇㄹ은 메인 파일(Main File)이 되며, calc.js 모듈 파일을 불러와서 사용한다.


calc.js 파일을 모듈로 불러오기 위해 먼저 require() 함수를 호출한다. 이때 require() 함수의 파라미터로 모듈 파일의 이름을 전달하는데, 파일 이름 전체를 다 사용하지 않고 확장자를 뺀 calc라는 이름만 사용한다.


파일 이름 앞에 ./를 붙인 것을 보면 상대 패스로 지정하였다는 것을 알 수 있다.


이렇게 불러들인 모듈은 calc 변수에 할당하였다.



※ 모듈의 이름만 지정하면 해당 파일을 찾아 불러들이지만 만약 파일이 없다면 폴더 이름을 찾아 그 안에 파일을 불러들이기도 한다.


require() 함수에 전달하는 모듈의 이름을 require('./calc') 처럼 지정하면 calc.js 파일을 찾아보고 파일이 없는 경ㅇ우에는 [calc] 폴더가 있는지 확인한다. 만약 [calc] 폴더가 있다면 그 안에 있는 index.js 파일을 불러들인다.


즉, [calc] 폴더를 만들고 그 안에 index.js 파일을 넣은 후 index.js 파일 안에 모듈 기능을 자바스크립트 코드를 입력한 경우에도 require('./calc') 코드로 모듈 파일을 불러올 수 있다.


모듈 파일을 만들 때 사용한 exports 객체는 메인 파일에서 모듈 파일을 불러들일 때 반환되므로 이 객체를 변수에 할당하여 사용할 수 있다고 생각하면 좀 더 쉽게 이해할 수 있다. 즉, 여기에서는 메인파일에 정의한 calc 변수가 모듈 파일에서 사용한 exports 객체와 같다.


이렇게 하면 모듈 파일에서 exports.add로 추가한 add 속성을 메인 파일의 calc 객체에서도 접근할 수 있으므로 calc.add() 코드로 함수를 호출할 수 있다.







함수를 호출하여 사용하는 코드는 모듈로 분리하기 전과 후가 다르지 않다.

즉, 모듈로 분리하기 전에도 calc.add() 코드를 사용했고, 모듈로 분리한 후에도 calc.add() 코드를 사용한 것이다.


하지만 모듈로 분리한 후에는 별도의 자바스크립트 파일이 만들어지므로 하나의 기능을 모듈로 정의해 두면 필요에 따라 원하는 모듈만을 불러와 사용할 수 있다는 장점이 있다.

LIST