UMD(Universal Module Definition)是一种通用的模块定义规范,它允许模块在不同的环境中使用,包括浏览器端和服务器端(如 Node.js)。UMD 模块兼容 CommonJS、AMD 和全局变量的使用,因此可以在不同的模块化环境中使用。
下面是一个简单的 UMD 模块的示例:
(function (root, factory) { if (typeof define === 'function' && define.amd) { // AMD define([], factory); } else if (typeof exports === 'object') { // CommonJS module.exports = factory(); } else { // 浏览器全局变量 root.MyModule = factory(); } }(this, function () { // 模块的实现 function greet(name) { return "Hello, " + name + "!"; } // 返回模块的公共接口 return { greet: greet }; }));
这个 UMD 模块定义了一个名为 MyModule
的模块,其中包含一个 greet
函数,用于向传入的 name
参数打招呼。
这个模块首先检查当前的环境,如果是 AMD 规范,则使用 define
函数来定义模块;如果是 CommonJS 规范,则将模块导出给 module.exports
;如果是浏览器环境,则将模块挂载到全局变量 MyModule
上。
通过这种方式,这个 UMD 模块可以在不同的模块化环境中使用,无需修改代码。在浏览器中,您可以通过将该脚本文件包含在 HTML 页面中,并通过全局变量 MyModule
来使用模块的功能。在 Node.js 中,您可以使用 require
函数来引入该模块,然后调用 MyModule.greet()
来使用其功能。