クイックリファレンス

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 + '!';
    }
  };
}));

参考リンク

関連テーマ