2.1 设计思路

jQuery一词可以分解为j+query,j是JavaScript的首字母小写,query一词表示查询的意思。也就是说,jQuery实际上就是JavaScript+Query的语义合成,直接理解就是JavaScript查询。

正如其名称一样,jQuery的核心功能就是JavaScript查询,它包含两个层面的语境:选择DOM元素,并对选择的对象进行操作。

概括来说,jQuery框架主要实现了两个目标:选择和操作。为此,jQuery重点解决了下面4个命题。

 选择什么?

 如何选择?

 操作什么?

 怎么操作?

在jQuery出现之前,Prototype、YUI等已经是很成熟的JavaScript框架,且各有优点,市场占有率比较高。为什么jQuery后来者居上,所向披靡?它有什么优秀的特质吸引专业的开发人员放弃已经熟悉的JavaScript框架,转身选用jQuery?

回答上述问题,需要先明白jQuery的设计思路。简单梳理一下,用户在Web开发中主要做了什么?

 使用getElementById()、getElementsByTagName()、querySelector()和querySelectorAll()等原生方法在DOM文档中找到目标元素。

 使用innerHTML、text等DOM属性读写值。

 监听DOM事件,如click等。

 通过改变DOM元素的CSS样式,设计各种动态视觉效果。

 通过Ajax技术,实现与服务器交换数据,并在指定DOM元素中显示。

当然,jQuery提供的功能远不止于此。

在对DOM元素进行操作时,这个DOM元素可能是单个元素,也可能是一个集合。操作的过程可以分解为以下两步。

 查找DOM元素。

 操作DOM元素。

用户通过JavaScript的原生方法可以查找DOM元素,也可以直接操作,但是考虑到浏览器的兼容性,以及代码的重用性,选用各种JavaScript类库就比使用原生方法方便、高效。

JavaScript类库只要使用恰当,不一定比直接采用JavaScript原生方法的运行效率低,但是却能极大地提高开发效率。

自从Prototype采用$作为document.getElementById的缩写,$符号似乎成了查找元素的专用符号。但是这种简单的查找并不能满足所有Web开发的需求,有时候需要像CSS选择器那样匹配DOM元素。

jQuery采用$符号作为查找元素的代理,不再是简单的getElementById的缩写,而是功能强大的CSS选择器,这也是Query的本意。

解决了查找的问题,下面就来对匹配元素进行操作。jQuery抛弃了Prototype通过对Array、Object、Function、Event等JavaScript原型的功能进行扩展,而是把所有的焦点汇集到如何解决DOM操作的便利性上。

jQuery在设计时遵循极简理念,它不仅简化了JavaScript原生方法的使用难度,同时提供了人性化、兼容性好的功能,如Ajax、Event、Fx、CSS等。概括说明如下。

 为用户提供了唯一入口:jQuery()构造函数($())。这样看起来更简洁,入手快。

 为用户提供统一的操作对象:jQuery对象。这样看起来更标准,使用快。

实际上,jQuery就是一个选择器。在选择器的基础上提供对匹配元素进行操作的功能。选择器是入口,操作是目标。从代码上进行分析,这种操作分为以下两种方式。

 jQuery工具函数:通过jQuery命名空间直接引用,相当于jQuery类型的静态方法,如jQuery.each()。

 jQuery方法:通过jQuery对象引用,如jQuery().each()。实际上这些jQuery方法大多数是jQuery工具函数的代理,真正的功能实现代码都包含在jQuery静态方法中。