Bin's Blog

오늘의 CS(디자인 패턴 - 노출모듈 패턴) 본문

CS

오늘의 CS(디자인 패턴 - 노출모듈 패턴)

hotIce 2023. 5. 12. 14:21
728x90

1.  노출모듈 패턴이란?

  • 노출모듈 패턴은 즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴이다.
  • 자바스크립트는 private는 public 같은 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행된다. 
  • public: 클래스에 정의된 함수에서 접근 가능하며 자식 클래스와 외부 클래스에서 접근 가능한 범위
  • private: 클래스에 정의된 함수에서 접근 가능하지만 자식 클래스와 외부 클래스에서 접근 불가능한 범위
  • 즉시 실행 함수: 함수를 정의하자마자 바로 호출하는 함수, 초기화 코드, 라이브러리 내 전역 변수의 충돌 방지 등에 사용한다. 
const pukuba = (() => {
    const a = 1;
    const b = () => 2
    const public = {
        c : 2,
        d : () => 3
    
    }
    return public;

})()

// { c : 2, d: [Function : d] }
console.log(pukuba);
// undefined
console.log(pukuba.a);
  • a와 b는 다른 모듈에서 사용할 수 있는 변수나 함수인 private 범위를 가진다. 
  • c와 d는 다른 모듈에서 사용할 수 있는 변수나 함수이며 public 범위를 가진다. 
  • 노출모듈 패턴을 기반으로 만든 자바스크립트 모듈 방식으로는 CJS(CommonJS)모듈 방식이 있다.

 

*  CommonJS 모듈?

- commonJS는 각각의 모듈이 자신만의 독립적인 공간(스코프)에서 동작하도록 하여, 모듈 간에 데이터가 섞이는 것을 방지하고, 필요한 모듈만을 불러와 사용할 수있게 해준다. 이렇게 하면 프로그램의 복잡성을 줄이고, 코드의 재사용성을 높일 수 있다.

- 기본적인 사용 방법 (모듈 생성)

// math.js
exports.add = function(a, b) {
  return a + b;
};

- 모듈을 생성하려면 exports라는 객체를 사용한다.

 

- 모듈 사용

// app.js
let math = require("./math");
// 3
console.log(math.add(1, 2));

- math.js 파일은 add라는 함수를 가진 모듈이고, app.js 파일에서 이 모듈을 불러와 사용하고 있다.

728x90