- 浏览: 323191 次
- 性别:
- 来自: 南昌
文章分类
最新评论
-
j_bird:
你好,想探讨下滑动窗口是怎么计算的,一条群发短信发出去,滑动窗 ...
协议研发 中移动CMPP2.0协议API -
andyliulin:
楼主,现在的magicode 生成器工具的 官网,http: ...
Mgicode 生成器正式发布 -
huazai_wow:
楼主 你只是分析了 在jquery 中 有使用到 jQu ...
jquery event trigger 分析 -
dengkanghua:
CMPP2.0中出现流量控制错误是什么引起的。有什么解决办法吗 ...
协议研发 中移动CMPP2.0协议API -
JohnHust:
[flash=200,200][/flash][url][/u ...
Jquery源码分析(一)
jQuery是一个非常优秀的JS库,与Prototype,YUI,Mootools等众多的Js类库相比,它剑走偏锋,从web开发的实用角度出发,抛除了其它Lib中一些中看但不实用的东西,为开发者提供了优美短小而精悍的类库。其使用简单,文档丰富,而且性能高效,能极大地提高web系统的开发效率。因此可以说是web应用开发中最佳的Js辅助类库之一。大部分开发者正在抛弃Prototype,而选择Jquery做为他们进行web开发的JS库。
如是开发人员仅仅只知道文档中的简单的使用方法,却不明白Jquery的运行原理和内部机制,在使用jquery时,肯定会碰到许多的问题。这些问题有一部分是Jquery的Bug。大部分是自身的使用不当而造成的。而文档的简单的使用说明很难解决问题。在调试基于jQuery的web应用时,很多时候都要跟踪进入jQuery对象分析其运行状态以了解出错的原因。
如果对于web的应用的页面运行性能和效率有所要求的话,那么我们更应该去明白其运行机理和核心源码。但是jQuery源码不像其它的类库那样,它有点晦涩,难懂。这就是本源码分析的原因,让所有使用jQuery的读者,能快速上手jQuery的源码,并在开发中得心应用。
Jquery的网络资源丰富,但Baidu了很久,很难找到那种完全深入地分析Jquery源码的文稿。倒是Jquery的开发者,John Resi的《Pro Javascript Techniques》涉及到Jquery的源码的分析,但是其主指还是在于JavaScript的使用。那本书并不能使我们完全细致地了解Jquery的源码。
写个这个源码分析的理由其实很简单,在工作中使用jquery经常出问题,不得不分析其源码,我把分析的源码放在blog。其标题是jquery core 源码分析。结果有一网友竟评论说打到标题党,可见还是有很多人像我这样想完全了解jquery的core代码。
从自己能看懂,到自己写出来。发现自己有一个质的提高。但是由于水平有限,分析过程的难免有错误。请大家多多指教。不过嘴下能留情就最好了。有什么问题可以到blog:jljlpch.iteye.com去访问和评论。附件附有打包的源码。
分析源码,最难的地方不是你能理解,你能分析得出来。如果把所有的分析都写在源文件中,我想很多人看不了多少行就会中止的。很难有人有兴趣对得源码一行行地去分析。何把源码有机地组合起来,串成一条线是本教程的最为头疼的地方。
读书的最高境界是厚积薄发。分析源码也是一样。对于4,5千行的jquery源码,我们如何做到心中有数,知道什么功能在什么函数里内呢? 什么函数用在什么地方呢?这样就得把所有的函数有机分类地重组起来,想着Jquery的主要目的和自己对于js方面的理解。我把整个Jquery薄发成三个单词 query-->manipulate-->expand。
jquery一个很紧缩的lib,它的主要目的就是对dom元素进行操作。那么dom元素的从哪里?
到dom树中去找。这就是query。$(),Jquery的构建就是一个query的过程。我们可以把这个query范围放大一点,它不光是从dom中查找的CSS selector,还有可能是从html的片断中去寻找的dom元素生成,更进一步就是直接的dom元素(集)。$()的构建就是从这里出发的。
query到元素集,这个query的过程还没有最终完成。因为这些结果集不一定满足我们的要求,那么就要筛选,要过滤。要进行数组方面的相关的操作。这就涉及到jquery对象的类数组的特征。我们就可以把这些类数组的相关的函数放在一起来分析。
当最终的需求的集合形成,我们要的完成我们真正要做的,对集合中的dom元素进行操作。
怎么操作?操作什么呢?不就是对dom元素的attribute,class, style,css,event等进行操作吗?
细化一下:
1、我们可以把attribute,class,style都看作是是属性的操作,还有expando的自定义的属性。这就涉及到jquery.data。
2、对dom元素的内容。什么是内容。innerHtml是。all childNodes也是,value也可以算。对于内容的操作就有追加,插入,前插,后插,内部前插和内部后插。那当然不能少了clone,remove这些操作。
3、CSS是可以在dom元素中单独出来分成一块来做分析的。对于css的操作,不就是height,width,innerHeight,innerWidth,out(height,widith)的操作,还有元素的位置(position,offset),display or not。这就是对于CSS的操作。
4、Event也是元素的操作中的一部分。这一部分除了addEvent,fireEvent,removeEvent,和domready就没有别的啦。
5、Ajax是给元素从服务器中找内容填充的。真正用到最多不还是load吗,对于getScript,getJson之类全都是在jQuery.ajax的函数的基础而出来。
6、Fx可以看做是CSS的操作。但是其又高于CSS。对于FX,最基本不就show,hide,slide(down,up),fade(in,out)这几种用法。无论什么用法,都基于时间的长短映射到元素CSS的属性值的对对应比率的大小。采用setInterval间隔来运行就形成了动画。这就animate()函数。所有效果的发源地。
想想整个jquery就是这么简单。当然如果没有去身体力行去自己分析,无论什么教程都是没有用的。
其实query-->manipulate是表层的东西。还有一个高层的就是expand。这涉及到一个lib的架构与设计。
这部分我们可以从源码的角度去解读对于js lib的架构。
除了扩展性(extend)之后,一个lib肯定是要花大力气去考虑它的性能。
考虑它的内存使用。
这是站在设计Jquery的角度去分析。
想了很久,但是这一部分还没有写入目前的源码分析中。
2008-08-29 prk
- Jquery1.2.6源码分析.rar (660.9 KB)
- 描述: Jquery1.2.6源码分析及源码文件
- 下载次数: 3821
评论
那俺也不吝啬了.
楼主,赞美你!!
引用
4、Event也是元素的操作中的一部分。这一部分除了addEvent,fireEvent,removeEvent,和domready就没有别的啦。 6、Fx可以看做是CSS的操作。但是其又高于CSS。对于FX,最基本不就 show,hide,slide(down,up),fade(in,out)这几种用法。无论什么用法,都基于时间的长短映射到元素CSS的属性值的对对应比率的大小。采用setInterval间隔来运行就形成了动画。这就animate()函数。所有效果的发源地。addEvent,fireEvent,removeEvent,和domreadyFx,show,hide,slide(down,up),fade(in,out)这些都是 MooTools 里的方法哈~~
其实protype,yui中也有。都差不多
6、Fx可以看做是CSS的操作。但是其又高于CSS。对于FX,最基本不就 show,hide,slide(down,up),fade(in,out)这几种用法。无论什么用法,都基于时间的长短映射到元素CSS的属性值的对对应比率的大小。采用setInterval间隔来运行就形成了动画。这就animate()函数。所有效果的发源地。
addEvent,fireEvent,removeEvent,和domready
Fx,show,hide,slide(down,up),fade(in,out)
这些都是 MooTools 里的方法哈~~
发表评论
-
[转载]jquery.validate.js的基本用法入门
2011-03-10 22:35 2884[转载]jquery.validate.js的基本用法入门 j ... -
使用javascript动态创建SVG对象的问题
2011-01-11 17:18 4745无沙备忘录系列 -平时的一些研究,有时也会颇费功夫,然 ... -
evaluate mxGraph
2010-06-10 16:09 1724To evaluate mxGraph: - Navigate ... -
js中的prototype与constructor
2010-06-09 10:53 2922并且每个函数都有一个默认的prototype属性。 如果这个函 ... -
jquery fx分析
2008-08-28 19:37 63168 FX分析 prk/彭仁夔 ... -
jqueyr fx源码(修改)
2008-08-28 19:33 2672/* * author:prk date:2008-08-0 ... -
jquery.ajax
2008-08-27 16:50 81137.2 jquery.ajax ... -
jquery event domready
2008-08-26 17:39 41396.3 domReady的处理 ... -
jquery event trigger 分析
2008-08-26 17:37 113776.2.2 trigger ... -
jquery event addEvent 分析
2008-08-26 17:36 111966.2 事件的处理 ... -
jquery event 封装的源源分析
2008-08-26 17:35 46036.Event分析 ... -
jquery position
2008-08-25 16:34 87805.2.3 position ... -
jquery wrap
2008-08-25 08:12 44785.3.5 wrap ... -
jquery element content
2008-08-25 08:11 43475.4dom元素的内容 ... -
jquery class
2008-08-22 23:18 53695.1.2 Class prk/彭仁夔 2008- ... -
jquery attr
2008-08-22 23:16 76145 DOM元素 prk/彭仁夔 ... -
jquery Selector (修改)
2008-08-21 17:10 3096/** * author:prk * date:2008- ... -
CSS selector (jquery的源码分析,修改)
2008-08-21 17:09 44183.3、采用CSS方式查找Dom节点 ... -
如何找到Dom元素
2008-08-20 22:10 28313、如何找到Dom元素 ... -
Jquery源码分析(修改)
2008-08-20 22:07 5784Jquery源码分析 ...
相关推荐
在阅读《jQuery 1.2.6源码分析.pdf》和研究源代码文件时,建议结合实际项目或示例进行实践,以加深理解。此外,对JavaScript的基本语法和DOM操作有深入理解也是必要的前提。通过这样的学习过程,相信你将能够成为一...
jquery1.2.6源码分析 jquery1.2.6源码分析
**jQuery 1.2.6 源码分析教程** jQuery 是一个广泛使用的 JavaScript 库,因其简洁的语法和强大的功能而备受开发者喜爱。在 jQuery 1.2.6 版本中,虽然它已经相对老旧,但其背后的实现原理和优化策略仍然值得深入...
jQuery 是一个非常优秀的 JS 库,与 Prototype,YUI,Mootools 等众多的 Js 类 库相比,它剑走偏锋,从web开发的...这就是本源码分析的原因,让所有使用 jQuery 的读者,能快速 上手 jQuery的源码,并在开发中得心应用。
**jQuery 1.2.6 源码分析** jQuery 是一个广泛使用的 JavaScript 库,它简化了 HTML 文档遍历、事件处理、动画以及 Ajax 交互等任务。本篇文章将深入探讨 jQuery 1.2.6 版本的源码,揭示其背后的实现原理,帮助...
《jQuery 1.2.6 源码分析与API详解》 jQuery 是一个广泛使用的JavaScript库,它极大地简化了JavaScript编程,使得DOM操作、事件处理、动画制作以及Ajax交互变得更加便捷。本篇文章将深入剖析jQuery 1.2.6版本的源码...
Jquery1.26版本的源码分析,pdf格式文档,相当清淅的书籍,前端开发者必看的类库书籍,虽然网上有很多jQuery的实例,但真正深入分析介绍jQuery源码细节的文档太少了,所以本篇文稿希望是你期待的,文档内容包括:...
在《Jquery1.2.6源码分析.pdf》和《Jquery1.2.6源码分析》中,你可以深入到每一行代码,研究其内部的工作原理。例如,你可以看到jQuery如何通过闭包和原型链来实现面向对象的设计,以及如何利用缓存和节流技术提高...
在`Jquery1.2.6源码分析`中,我们可以看到早期版本的Sizzle是如何通过正则表达式和遍历DOM树来实现高效的元素查找的。这个过程涉及到了对DOM API的深入理解和性能优化。 其次,jQuery的链式调用模式是其易于使用的...
"Jquery1.2.6源码分析.rar"则可能是对jQuery 1.2.6版本的源代码进行解析的资料。源码分析有助于理解jQuery内部的工作机制,加深对JavaScript语言和面向对象编程的理解。通过阅读和分析源码,开发者可以学习到如何...
XMLHTTP 手册.CHM 正则表达式系统教程.CHM ...prototype.chm XMLDOM对象手册.chm DHTML默认行为手册.chm 设计模式手册.chm DOM文档对象模型手册.chm SQL参考手册.chm 网页设计配色常识.chm ...Jquery1.2.6源码分析.pdf