반응형

◎ 모듈이란?

▼ 내용

모듈이란 관련된 객체들의 집합소.

어떠한 기능을 수행하기 위해 함수 또는 객체들을 만들어 놨으면.

그걸 한 .js의 파일에 써놓기엔 가독성이나 유지보수가 좋지 않아서 관련 함수 또는 객체들을

.js파일별로 따로 모아놓은것들을 모듈이라고 생각하면 된다.


◎ module.exports

▼ 내용

module.exports의 모듈방법

test.js

var template = { a: 'a', b: 'b' } module.exports = template; //또는 module.exports = { a: 'a', b: 'b' }

abc.js

var template = require('test.js'); console.log(template.a); // a

test.js 처럼 2가지 경우로 module.export 를 사용하여 모듈화를 시킬수 있다.

그 모듈화 시킨걸 abc.js 처럼 가져오는 거다.


◎ exports

▼ 내용

module.exports의 모듈방법

test.js

var template = { a: 'a', b: 'b' } exports.foo = template; //또는 exports.foo = { a: 'a', b: 'b' }

abc.js

var template = require('test.js'); console.log(template.foo.a);//a

test.js 처럼 2가지 경우로 module.export 를 사용하여 모듈화를 시킬수 있다.

그 모듈화 시킨걸 abc.js 처럼 가져오는 거다.


◎ exports 와 module.exports 의 차이점

▼ 내용

일단 간단하게 소스로 설명하자면 exports와 module.exports의 차이점은

var module = { exports: {} }; var exports = module.exports; // your code return module.exports;

이렇게 되는것이다. 결국 exports객체와 module.exports객체는 동일하며

exports 가 module.exports객체를 call by reference 방식으로 바라보고 있으며, 최종적으로 리턴값은 module.exports 라는것이다.

위의 예제중에서 exports는 property 방식을 쓰고 module.exports는 그냥 바로 썻는데

그 이유는 exports를 바로 써버리면 module.exports의 call by reference 관계를 끊어버려서

exports라는 변수가 되버리기 때문이다.

결론

exports 는 property 방식으로 사용

module.exports 는 바로 사용가능

var template = { a: 'a', b: 'b'}; module.exports.foo = template; //(o) module.exports = template; //(o) module.exports = { a: 'a', b: 'b'} // (o) exports.foo = template; //(o) exports = template; //(x) exports = { a: 'a', b: 'b'} // (x)


반응형

+ Recent posts