프로그래밍 언어/Javascript
[Node.js] 모듈로 만들기
johnna_endure
2020. 1. 7. 21:00
모듈이란?
특정한 기능을 하는 함수나 변수들의 집합입니다.
모듈로 만들어두면 여러 프로그램에 해당 모듈을 재사용할 수 있습니다.
보통 파일 하나가 모듈 하나가 됩니다. 파일별로 코드를 모듈화할 수 있어 관리하기 편리합니다.
예제
목표
stringUtils.js , main.js 파일을 만들고 main에서 stringUtils의 메서드를 import해서 쓸 수 있도록 해보자.
stringUtils.js
function reverse(str) {
return str.split("").reverse().join("");
}
function wrapBracket(str) {
return `{${str}}`;
}
module.exports = {reverse, wrapBracket};
main.js
const stringUtils = require('./stringUtils');
let str = 'hello, world!';
console.log(stringUtils.wrapBracket(str));
console.log(stringUtils.reverse(str));
예제 설명
위의 예제에서 주목할 만한 부분은 module.exports와 require 메서드입니다.
그리고 module 객체는 Node에서 제공하는 내장 객체로 위의 코드는 IDE에서 실행한다면 환경에 Node.js가 설치돼있어야 합니다.
require 메서드 역시 Node에서 제공하는 내장 객체 중 하나인 global의 메서드입니다.
exports 프로퍼티에 모듈화할 메서드나 변수등을 포함한 객체를 할당합니다.
require 메서드의 인수로는 모듈화를 선언한 파일명의 경로를 건네줍니다. 그러면 반환받은 객체의 프로퍼티로 export한 변수나 메서드에 접근해 사용할 수 있습니다.
참고: ES2015 모듈
ES2015가 도입되면서 자바스크립트도 자체 모듈 시스템 문법이 생겼습니다. 노드의 모듈 시스템과는 문법이 조금 다릅니다.
hello.mjs <- 임의의 자바스크립트 파일
import { alias, alias } from '모듈 파일 경로명';
...
export default 메서드 or 객체 or 변수등;
노드에서도 9버전부터 ES2015의 모듈 시스템을 사용할 수 있습니다. 하지만 파일의 확장자를 mjs로 지정해야 하는 등의 번거로움이 있습니다. 그냥 module 객체를 이용하는게 더 편할듯 합니다.
출처 : Node.js 교과서 - 조현영