1.0 第1章 认识jQuery 1.1 JavaScript和JavaScript库

第1章 认识jQuery

随着Web 2.0的兴起,JavaScript越来越受到重视,一系列JavaScript程序库也蓬勃发展起来。从早期的Prototype、Dojo到2006年的jQuery,再到2007年的ExtJS,互联网正在掀起一场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不再是一种仅仅用于制作Web页面的简单脚本。

1.1.2 JavaScript库作用及对比

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

Prototype(http://www.prototypejs.org/),Logo如图1-1所示。

epub_731606_8

图1-1 Prototype的Logo

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

Dojo(http://dojotoolkit.org/),Logo如图1-2所示。

epub_731606_9

图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所示。

epub_731606_10

图1-3 YUI的Logo

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

Ext JS(http://www.extjs.com/),Logo如图1-4所示。

epub_731606_11

图1-4 Ext JS的Logo

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

MooTools(http://mootools.net/),Logo如图1-5所示。

epub_731606_12

图1-5 MooTools的Logo

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

jQuery(http://jquery.com),Logo如图1-6所示。

epub_731606_13

图1-6 jQuery的Logo

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

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

epub_731606_14

图1-7 各种JavaScript库的Google访问量趋势图
注意:读者可以通过链接http://www.google.com/trends来查找更多相关搜索量指数。