NodeJS - 모듈 시스템

pa324·2019년 11월 18일
0

javascript 모듈 시스템

기존의 자바스크립트 환경에서 모듈시스템을 사용할때는 window객체를 사용하거나, Requires JS와 같은 라이브러리를 사용했다.


window.module1 = function() {return 'module1';}
window.module2 = function() {return 'module2';}
module1()
window.module1()
mdoule2()
window.module2()

NodeJS 모듈 시스템

NodeJS는 파일 형태로 모듈을 관리할 수 있는 Common JS로 구현하였다. 모듈은 복잡한 application을 구성하기 위한 블록 역할을 하기도 하지만, exports시키지 않은 내부적인 함수와 변수들은 비공개로 유지하여 정보를 숨기는 메커니즘이기도 하다.

기본 모듈 사용

const http = require('http');
http.createServer();

사용자 정의 모듈

function sum(a,b) {
	return a + b;
}

module.exports = {
	sum : sum
}

노출식 모듈 패턴

자바스크립트의 문제점 중 하나가 네임스페이스가 없다는 것이다. 전역 범위에서 실행되는 프로그램은 내부 application과 종속된 라이브러리 코드의 데이터들로 인해 충돌이 발생할 수 있다. 이 문제를 해결하기 위해 노출식 모듈 패턴을 사용해야 한다.


const module = (() => {

	const privateFoo = () => {}
    const privateBar = [];
  
  	const exported = {
    	publicFoo : () => {},
      	publicBar : () => {}
    };
  
  return exported;

})();
console.log(module)

위의 패턴은 자기 호출 함수를 사용하여 private 범위를 만들고 공개될 부분만 export한다. console을 통해서 확인하면, exportedehls api만 포함되있고, 나머지 모듈 내부 컨텐츠에는 외부에서 접근이 불가능하다.

profile
안녕하세요

0개의 댓글