jquery插件源码问题

谁能解释一下这段代码的具体作用。 我大体知道是解决变量冲突,namespase相关的东西

(function(factory){
  if (typeof define === 'function' && define.amd) {
    define(['jquery'], factory);
  } else {
    factory(window.jQuery || window.Zepto || window.$);
  };
}(function($){
    //具体代码
}
阅读 2.4k
2 个回答

判断js文件中的$的变量名冲突,检查工厂函数jQuery是否存在,如果不存在,则$优先表示jQuery的$,其次是zepto,然后是window的全局变量
这个一般会显示在封装好的插件中,因为引入插件,难免有时会有jQuery的$冲突,这个时候如果冲突了,插件中的$就替换成jQuery

if (typeof define === 'function' && define.amd) {
    define(['jquery'], factory);
}

判断是否是通过 AMD 加载方式加载的 jquery,如果是 AMD,则传入插件方法作为 callback,接受 AMD 加载的 jquery 对象

else {
  factory(window.jQuery || window.Zepto || window.$);
};

如果没有通过 AMD 加载,则直接从全局依次寻找 jQuery、Zepto、$ ,然后传入插件方法全局的这个对象

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题