EEALL@ONCE

🔦노출모듈패턴이 뭔데? 본문

분류없음지식🔦

🔦노출모듈패턴이 뭔데?

올엣원스 2023. 12. 19. 21:05
728x90

노출 모듈 패턴(Revealing Module Pattern)은 JavaScript의 디자인 패턴 중 하나로, 모듈화된 코드를 작성하는 데 사용됩니다. 이 패턴은 즉시 실행 함수 표현식(IIFE)를 사용하여 데이터의 은닉성과 캡슐화를 제공합니다. 주요 특징은 다음과 같습니다:

  1. 은닉성(Encapsulation): 모듈 내부의 변수와 함수는 기본적으로 비공개 상태이며, 외부에서 접근할 수 없습니다.
  2. 공개 인터페이스(Exposure): 외부에서 사용할 수 있는 함수나 변수만을 선택적으로 공개합니다.
  3. 구조: 모듈은 즉시 실행 함수로 구성되며, 내부 함수 및 변수를 포함합니다. 공개할 멤버는 반환 객체에 포함시킵니다
var myModule = (function() {
    // 비공개 변수와 함수
    var privateVar = "I am private";
    var privateFunction = function() {
        console.log(privateVar);
    };

    // 공개될 부분을 객체 리터럴로 반환
    return {
        publicFunction: function() {
            privateFunction();
        }
    };
})();

// 사용
myModule.publicFunction();  // 출력: "I am private"

그림에는 '내 모듈'이라고 쓰여진 마법 상자가 있습니다. 이 상자 안에는 '비공개 부분'으로 표시된 기어와 도구들이 있지만, 바깥에서는 볼 수 없어요. 상자에는 '공개 인터페이스'라고 적힌 작은 창문이 있는데, 여기서는 바깥에서 접근할 수 있는 레버만 보여집니다. 상자 밖에는 한 캐릭터가 레버를 사용하는 모습이 있어요. 이를 통해 노출 모듈 패턴에서는 모듈의 특정 부분만 외부에서 사용할 수 있다는 것을 보여줍니다.


🧐 즉시 실행 함수란? 

즉시 실행 함수(Immediately Invoked Function Expression, IIFE)는 자바스크립트에서 즉시 호출되고 실행되는 함수입니다. 이런 함수는 선언과 동시에 단 한 번 실행되며, 주로 변수의 스코프를 제한하여 전역 네임스페이스를 오염시키지 않기 위해 사용됩니다.

즉시 실행 함수는 다음과 같은 형태를 가집니다:

(function() {
    // 여기에 코드를 작성합니다.
    console.log("이 함수는 즉시 실행됩니다.");
})();

이 구조에서 함수는 괄호 () 안에 정의되고, 바깥쪽의 또 다른 괄호 쌍에 의해 즉시 호출됩니다. 이 방식으로 함수를 정의하면, 함수 내의 변수들은 함수 외부로 노출되지 않아 외부에서 접근할 수 없습니다. 이는 모듈 패턴이나 개인 정보 보호와 같은 경우에 유용하게 사용됩니다.


즉시 실행 함수를 통해서, private /public 처럼 접근 제어자를 만드는 패턴이 노출모듈 패턴이다.
728x90