(function(factory) { if (typeof define === 'function') { // 如果define已被定义,模块化代码
define('sayHello', ['jquery'], function(require, exports, moudles) {
factory(require('jquery')); // 初始化插件
return jQuery; // 返回jQuery
});
} else { // 如果define没有被定义,正常执行jQuery
factory(jQuery);
}
} (function($) { console.log('init', $);
$.sayHello = function() { console.log("Hello");
};
}));我的疑问在于1.这个也属于自执行函数的一种写法吗?2.factory是什么意思。3.对这个的整个流程比较模糊求大神帮助。。。。
1 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
答案重置:
卧槽,手机版的sf真他妈神了,误点了删除按钮也没个提示就直接把我的答案给删了|_|
重新编辑答案:
这是一段不太典型的umd格式代码。
umd
的目标很简单,就是希望这个库能够成功的运行在AMD
, CommonJS
以及普通的<script>
标签加载的环境里。
常见的umd
声明方式如下:
if( typeof define === "function" && define.amd ){ //如果使用者的环境是`requirejs`加载器,那把该库的具体实现通过`define`关键字声明 define(factory); } else if( typeof module != "undefined" && typeof module.exports != "undefined" ){ //如果使用者的环境是nodejs,或者webpack,browserify等加载器,那通过commonjs的模块方式暴露 module.exports = factory(); } else { //最后如果使用者就是直接在html里通过<script src="xxx">的方式引入该库,那把该库的内容直接挂在window对象上 window["Sortable"] = factory(); }
factory
就是你要开发的库的具体实现体
添加回答
举报
0/150
提交
取消