cmd,amd,umd 模块写法
mark一篇感觉写的不错的cmd/amd/umd的模块写法
原文:https://github.com/banricho/webLog/issues/12
umd通用写法:
// jQuery 2.2.0 (function(global, factory) { // 判断是否支持 CommonJS 规范 if (typeof module === "object" && typeof module.exports === "object") { /* ... 省略进一步判断是否存在 document ... */ } else { // 不支持 CommonJS 规范时执行 factory(global); } // 判断 window 对象是否存在,若否则代入全局的 this,即 Node 环境下的 global 对象 }(typeof window !== "undefined" ? window : this, function(window, noGlobal) { /* ... 省略 jQuery 主体 ... */ // 检测是否支持 AMD 规范,如果支持则会 return 为 AMD 模块 if (typeof define === "function" && define.amd) { define("jquery", [], function() { return jQuery; }); } // 不支持 AMD 规范时才会执行以下代码 // 由于 factory(global) 没有传入 noGlobal,所以 !noGlobal 为 true // 不支持 CommonJS,也不支持 AMD,则将 jQuery 暴露为全局变量 if (!noGlobal) { window.jQuery = window.$ = jQuery; } return jQuery; }));