第1章  认识jQuery

随着Wed 2.0的兴起,JavaScript越来越受到重视,一系列JavaScript程序库也蓬勃发展起来。从早期的Prototype、Dojo到2006年的jQuery,再到2007年的Ext Js,互联网正在掀起一场JavaScript风暴。jQuery以其独特优雅的姿态,始终处于这场风暴的中心,受到越来越多的人的追捧。

1.1  JavaScript 和 JavaScript库
1.1.1  JavaScript 简介

在正式介绍之前jQuery,有必要先了解一下JavaScript。

JavaScript是Netscape公司开发的一种脚本语言(scripting language)。JavaScript的出现使得网页和用户之间实现了一种实时的、动态的和交互的关系,使网页可以包含更多活跃的元素和更加精彩的内容。JavaScript自身存在3个弊端,即复杂的文档对象模型(DOM)、不一致的浏览器实现和便捷的开发、调试工具的缺乏。

正当JavaScript从开发者的视线中渐渐隐去时,一种新型的基于JavaScript的Web技术——Ajax(Asynchronous JavaScript And XML,异步的JavaScript和XML)诞生了。而使人们真正认识到Ajax技术的强大的导火索是Google公司推出的一系列新型Web应用,例如 Gmail、Google Suggest和Google Map 等。如今,浩瀚的互联网中基于JavaScript的应用越来越多,JavaScript不再是一种仅仅用于制作Wed页面的简单脚本。

1.1.2  JavaScript库作用及对比

为了简化JavaScript的开发,一些JavaScript程序库诞生了。JavaScript程序库封装了很多预定义的对象和实用函数,能帮助使用者轻松地建立有高难度交互的Wed 2.0特性的富客户端页面,并且兼容各大浏览器。下面是目前几种流行的JavaScript程序库的介绍和对比。

Prototype (http://www.prototypejs.org/),logo如图1-1所示。prototype是最早成型的JavaScript库之一,对JavaScript的内置对象(例如String对象、Array对象等)做了大量的扩展。现在还有很多项目使用prototype。prototype可以看做是把很多好的、有用JavaScript的方法组合在一起而形成的JavaScript库,使用者可以在需要的时候随时将其中的几段代码抽出来放进自己的脚本里。但是由于prototype成型年代早,在整体上对面向对象的编程思想把握得不是很到位,导致了其结构的松散。不过现在prototype也在慢慢改进。
Dojo (http://dojotoolkit.org/),logo如图1-2所示。

      
图1-1  ProtoType的Logo         图1-2  Dojo的Logo

Dojo的强大之处在于Dojo提供了很多其他JavaScript库所没有提供的功能。比如离线存储的API、生成图标的组件、基于SVG/VML的失量图形库、Comet支持等。Dojo是一款非常适合企业级应用JavaScript库。并且得到了IBM、SUN、BEA等一些大公司的支持。但是Dojo的缺点也是很明显的:学习曲线陡,文档不齐全,最严重的就是API不稳定,每次升级都可能导致已有的程序失效。但是自从Dojo的1.0.0版以后,情况有所好转。Dojo还是一个很有发展潜力的库。
YUI (http://developer.yahoo.com/yui/),Logo如图1-3所示。

YUI(Yahoo! UI, The Yahoo! User Interface Library ),是由Yahoo公司开发的一套完备的扩展性良好的富交互网页程序工具集。YUI封装了一系列比较丰富的功能,例如DOM操作和Ajax应用等,同时还包括了几个核心的CSS文件。该库本身文档极其完备,代码编写得也非常的规范。
ExtJS (http://www.extjs.com/),Logo如图1-4所示。

      
图1-3  YUI的Logo            图1-4  Ext Js的Logo

ExtJS常简称为Ext,原本是对YUI的一个扩展,主要用于创建前端用户界面,如今已经发展到可以利用包括jQuery在内的多种JavaScript框架作为基础库,而Ext作为界面的扩展库来使用。Ext可以用来开发富有华丽外观的富客户端应用,能使B/S应用更加具有活力。但由于Ext侧重于界面,本身比较臃肿,所以使用之前请先权衡利弊。另外,需要注意的是,Ext并非完全免费,如果用于商业用途,需要付费获得授权许可的。
MooTools (http://mootools.net/),Logo如图1-5所示。

mooTools是一套轻量、简洁、模块化和面向对象的JavaScript框架。MooTools的语法几乎跟Prototype一样,但却提供了更为强大的功能、更好的扩展性和兼容性。其模块化思想非常优秀,核心代码大小只有8KB。无论用到哪个模块都可即时导入,即使是完整版大小也不超过160KB。mooTools完全彻底的贯彻了面向对象的编程思想,语法简洁直观,文档完善,是一个非常不错的JavaScript库。
jQuery (http://jquery.com),Logo如图1-6所示。

      
图1-3  MooTools的Logo            图1-4  JQuery的Logo

本书的重点jQuery同样是一个轻量级的库,拥有强大的选择器、出色的DOM操作、可靠的事件处理、完善的兼容性和链式操作等功能。这些优点吸引了一批批的JavaScript开发者去学习它、研究它。

总之,每个JavaScript库都有个自的优点和缺点,同时也有各自的支持者和反对者,目前几个最流行的JavaScript库的Google访问量趋势图,如图1-7所示。很明显,自从jQuery诞生那天起,其关注度就一直在稳步上升,jQuery已经逐渐从其他JavaScript库中脱颖而出,成为Web开发人员的最佳选择。

图1-7  各种JavaScript库的Google访问量趋势图