`
jljlpch
  • 浏览: 324020 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

jquery core 源码分析

阅读更多

jQuery是一个非常优秀的JS库,与Prototype,YUI,Mootools等众多的Js类库相比,它剑走偏锋,从web开发的实用角度出发,抛除了其它Lib中一些中看但不实用的东西,为开发者提供了优美短小而精悍的类库。其使用简单,文档丰富,而且性能高效,能极大地提高web系统的开发效率。因此可以说是web应用开发中最佳的Js辅助类库之一。大部分开发者正在抛弃Prototype,而选择Jquery做为他们进行web开发的JS库。

如是开发人员仅仅只知道文档中的简单的使用方法,却不明白Jquery的运行原理和内部机制,在使用jquery时,肯定会碰到许多的问题。这些问题有一部分是JqueryBug。大部分是自身的使用不当而造成的。而文档的简单的使用说明很难解决问题。在调试基于jQueryweb应用时,很多时候都要跟踪进入jQuery对象分析其运行状态以了解出错的原因。

如果对于web的应用的页面运行性能和效率有所要求的话,那么我们更应该去明白其运行机理和核心源码。但是jQuery源码不像其它的类库那样,它有点晦涩,难懂。这就是本源码分析的原因,让所有使用jQuery的读者,能快速上手jQuery的源码,并在开发中得心应用。

Jquery的网络资源丰富,但Baidu了很久,很难找到那种完全深入地分析Jquery源码的文稿。倒是Jquery的开发者,John Resi的《Pro Javascript Techniques》涉及到Jquery的源码的分析,但是其主指还是在于JavaScript的使用。那本书并不能使我们完全细致地了解Jquery的源码。

 

写个这个源码分析的理由其实很简单,在工作中使用jquery经常出问题,不得不分析其源码,我把分析的源码放在blog。其标题是jquery core 源码分析。结果有一网友竟评论说打到标题党,可见还是有很多人像我这样想完全了解jquerycore代码。

从自己能看懂,到自己写出来。发现自己有一个质的提高。但是由于水平有限,分析过程的难免有错误。请大家多多指教。不过嘴下能留情就最好了。有什么问题可以到blog:jljlpch.iteye.com去访问和评论。附件附有打包的源码。

分析源码,最难的地方不是你能理解,你能分析得出来。如果把所有的分析都写在源文件中,我想很多人看不了多少行就会中止的。很难有人有兴趣对得源码一行行地去分析。何把源码有机地组合起来,串成一条线是本教程的最为头疼的地方。
读书的最高境界是厚积薄发。分析源码也是一样。对于45千行的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,cssevent等进行操作吗?

细化一下:

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-31 prk

 

分享到:
评论
4 楼 jljlpch 2008-10-18  
qiyu15555 写道

LZ:pdf档怎么要密码才能开啊?

能看啊,不过不能copy,源码中都有。
3 楼 qiyu15555 2008-10-18  
LZ:pdf档怎么要密码才能开啊?
2 楼 zhouyrt 2008-08-26  
樓主夠狠,通讀了源代碼。肯定獲益非淺。
1 楼 jonee 2008-08-10  
打倒标题党.

相关推荐

    Jquery1.2.6 源码分析

    其标题是jquery core 源码分析。结果有一网友竟评论说打到标题党,可见还是有很多人像我这样想完全了解jquery的core代码。 从自己能看懂,到自己写出来。发现自己有一个质的提高。但是由于水平有限,分析过程的难免...

    jQuery 2.0.3 源码分析之core(一)整体架构

    总结来说,jQuery的源码分析给我们提供了深入理解库内部工作原理的机会,并能够借鉴其在设计和实现上的技巧。通过无new构造模式、工厂方法模式、作用域隔离、AMD规范支持等设计思想,jQuery成为了一个强大、灵活且...

    JqueryUI 源码

    4. **jQuery UI 源码分析** - **核心函数**:研究`ui.core.js`,理解jQuery UI的基础架构和核心功能。 - **组件实现**:每个组件都有自己的JS和CSS文件,如`ui.dialog.js`和`ui.dialog.css`,分析这些文件可以了解...

    jquery源码 带格式

    通过以上对jQuery源码的部分分析,我们可以看出jQuery在设计上考虑了兼容性、性能以及安全性,采用了大量的正则表达式进行字符串和DOM元素的处理,并提供了丰富的工具函数和API来简化JavaScript的编程工作。

    jquery源码好不容易找到的与大家分享

    1. **模块化设计**:jQuery源码采用模块化设计,分为多个部分,如`selector.js`(选择器引擎)、`core.js`(核心功能)、`traversing.js`(遍历DOM)等,这有利于代码的组织和维护。 2. **函数封装**:jQuery将所有...

    jquery:jquery源码分析

    **jQuery: 深入解析源码** ...总之,jQuery 源码分析是一个深度学习 JavaScript 的过程,它涵盖了 DOM 操作、事件处理、动画制作等多个方面,通过研究源码,开发者能够更好地运用 jQuery,甚至开发出自己的库或插件。

    jQuery:jQuery 源码分析

    **jQuery: 深入理解与源码分析** jQuery 是一个广泛使用的 JavaScript 库,它极大地简化了 DOM 操作、事件处理、动画效果以及 AJAX 交互。jQuery 的流行在于其简洁的 API 和高效的代码实现,使得开发者能够用更少的...

    带锋利的JQuery第二版的源码

    这本书旨在帮助开发者理解和掌握jQuery的精髓,通过源码分析,我们可以更直观地看到jQuery是如何高效地处理DOM操作、事件处理、动画效果以及Ajax请求的。 jQuery是一个广泛使用的JavaScript库,它的主要目标是简化...

    jquery.jqplot图表源码

    **源码分析** 下载的"JQ图表源码"压缩包包含了jqPlot的完整源代码,包括JavaScript文件、CSS样式表、示例文件以及可能的文档。这些文件的解析有助于深入理解jqPlot的工作原理和定制方法: 1. **JavaScript文件**:...

    HeadFirst jquery源代码

    8. **版本迭代**:jQuery经历了多个版本的迭代,从最初的1.x到后来的2.x和3.x,优化性能,支持现代浏览器特性,并引入了模块化设计(如jQuery UI和jQuery Core)。 9. **jQuery与现代前端框架**:随着React、Vue和...

    jquery.jqGrid源码.zip

    总的来说,通过分析jqGrid的源码,开发者不仅可以定制化自己的表格功能,还可以学习到jQuery、JavaScript以及前端数据管理的高级技巧。在实际开发中,掌握jqGrid的源码将大大提高工作效率,同时也能提升对前端技术的...

    jquery ui 的messager 方法(对话框与交互)

    通过源码分析,我们可以了解对话框的工作原理,例如事件监听、元素定位、动画效果的实现等。同时,jQuery UI提供了丰富的API,如`.dialog('option', optionName, value)`用于修改已创建的对话框选项,`.dialog('is...

    jquery-ui-1.8.2.custom.zip

    通过查看和分析这个文件,我们可以学习到如何正确地配置和调用jQuery UI的各种功能。 2. **css**:这个目录包含了jQuery UI的CSS样式文件。这些文件定义了UI组件的外观和布局,包括基础样式和主题样式。其中的“ui....

    jqueryUI(jquery演示部分)

    jQuery UI 通过模块化设计,允许开发者按需选择加载组件,比如 `ui.core.js` 提供了基础功能,而 `ui.widget.js` 是所有组件的基类,其他如 `ui.dialog.js` 为对话框组件,`ui.slider.js` 用于创建滑块等。通过分析...

    jquery ui 1.8.2 code

    `js` 文件夹存放 JavaScript 文件,其中 `ui/jquery.ui.core.js` 是核心模块,其他如 `ui/jquery.ui.widget.js`、`ui/jquery.ui.mouse.js` 等则为各个组件的具体实现;`css` 文件夹包含样式表,用于定义组件的视觉...

    jquery user interface

    三、jQuery UI 源码分析 jQuery UI 的源码结构清晰,模块化程度高。主要由几个部分组成:核心(core)、效果(effects)、交互(interactions)、小部件(widgets)以及主题(themes)。开发者可以根据需要引入特定...

    jquery树

    通过理解其基本概念、实现方式、选择合适的插件以及掌握源码分析和工具应用,开发者可以高效地在项目中集成和定制jQuery树,提升用户体验。在实际应用中,根据项目需求选择适当的实现策略,可以大大提高开发效率和...

    jquery-ui-1.8.14.custom

    通过分析和修改这个文件,开发者可以快速了解并实践 jQuery UI 的基本用法。 接着是 `css` 目录,它包含了 jQuery UI 的样式表文件。这些 CSS 文件定义了所有 UI 元素的外观和布局。其中 `themes` 文件夹下可能有...

Global site tag (gtag.js) - Google Analytics