빠른 참조

Universal Module Definition (UMD) 치트시트

JavaScript UMD 패턴 빠른 참조 가이드: AMD (RequireJS), CommonJS (Node.js), 브라우저 전역 객체와 완벽하게 호환되는 모듈 작성법.

· 게시일

Universal Module Definition (UMD) 패턴은 CommonJS (Node.js), AMD (RequireJS), 브라우저 <script> 환경 전반에서 문제없이 로드되는 JavaScript 라이브러리를 제작하는 표준적인 방식입니다.

외부 종속성이 있는 UMD

;(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. 익명 모듈로 등록
    define(['b'], factory);
  } else if (typeof module === 'object' && module.exports) {
    // Node.js / CommonJS
    module.exports = factory(require('b'));
  } else {
    // 브라우저 전역 객체 (root는 window)
    root.myModule = factory(root.b);
  }
}(typeof self !== 'undefined' ? self : this, function (b) {
  // 모듈 구현부
  function myModule() {}
  myModule.prototype.doSomething = function () {};

  return myModule;
}));

종속성 없는 독립형 UMD

;(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    define([], factory);
  } else if (typeof module === 'object' && module.exports) {
    module.exports = factory();
  } else {
    root.myUtility = factory();
  }
}(typeof self !== 'undefined' ? self : this, function () {
  return {
    greet: function (name) {
      return '안녕하세요, ' + name + '!';
    }
  };
}));

참고자료

관련 주제