يتيح نمط تعريف الوحدات الشامل (UMD - Universal Module Definition) إنشاء مكتبات جافا سكريبت تعمل بسلاسة عبر بيئات CommonJS (Node.js) و AMD (RequireJS) وبيئات وسوم <script> في المتصفحات.
نمط 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 + '!';
}
};
}));