最近开始学习Zepto源码,分享一下,一起学习。前端新人,技术差,求gitbook地址参考,望见谅。感谢作者贡献代码主体:DefineZepto——核心自执行函数function中的变量均为私有变量,防止全局污染varzepto=(function(){})();自执行函数定义全局Zepto核心函数selector)returnzepto.Z()//优化字符串选择器elseif(typeofselector=='string'){selector=selector.trim()//如果是html片段,从中创建节点//注意:在Chrome21和Firefox15,如果片段不是以<开头,则抛出DOM错误12//if(selector[0]=='<'&&fragmentRE.test(selector))dom=zepto.fragment(selector,RegExp.$1,context),selector=null//如果有上下文,首先在该上下文上创建一个集合,然后从那里选择//??节点elseif(context!==undefined)return$(context).find(selector)//如果是CSS选择器,用它来选择节点。elsedom=zepto.qsa(document,selector)}//如果给定一个函数,当DOM准备好时调用它elseif(isFunction(selector))return$(document).ready(selector)//如果一个Zeptocollection给出,只返回它elseif(zepto.isZ(selector))returnselectorelse{//如果给定节点数组,则规范化数组if(isArray(selector))dom=compact(selector)//包装DOM节点.elseif(isObject(selector))dom=[selector],selector=null//如果它是一个html片段,从它创建节点elseif(fragmentRE.test(selector))dom=zepto.fragment(selector.trim(),RegExp.$1,context),selector=null//如果有上下文,先在那个上下文上创建一个集合,然后选择t//nodesfromthereelseif(context!==undefined)return$(context).find(selector)//最后但同样重要的是,如果它是CSS选择器,请使用它来选择节点。否则dom=zepto。qsa(document,selector)}//从找到的节点创建一个新的Zepto集合returnzepto.Z(dom,selector)}如果传递的第一个参数是一个字符串——第一个字母是<并且创建一个新的html标签DOM否则,如果是普通字符串,直接获取DOM。如果有第二个参数,只用一个参数递归调用这个方法,然后执行find方法。如果传递的参数是一个函数——将它作为准备好的回调传递。如果已经存在,则直接返回zepto对象。如果是如果DOM数组是单个DOM,如果它是一个html片段,则返回一个已执行的函数zepto.Z函数://`$.zepto.Z`换出给定的`dom`数组的原型//of带有`$.fn`的节点,从而将所有Zepto函数//提供给数组。这个方法可以在插件中被覆盖。zepto.Z=function(dom,selector){returnnewZ(dom,selector)}ZfunctionfunctionZ(dom,selector){vari,len=dom?dom.length:0for(i=0;i
