JavaScript简介
JavaScript是为了适应动态网页制作的需要而诞生的一种编程语言。它是由 Netscape公司开发的一种脚本语言(scripting language)。JavaScript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。然而,几乎每个 Web 开发人员都曾有过诅咒 JavaScript 的经历。这个备受争议的语言受累于其复杂的称为文档对象模型 (DOM)的编程模型、糟糕的实现和调试工具以及不一致的浏览器实现。直到现在,很多开发人员还认为JavaScript是一门令人厌恶的语言。
随着WEB2.0的兴起,作为广泛应用于 Web 开发的脚本语言,JavaScript开始日益重要起来,JavaScript的复苏使一些业界领袖人物也不得不开始重新审视这种编程语言。诸如 Ajax (Asynchronous JavaScript + XML) 这样的编程技术让 Web 网页更加迷人,而完整的 Web 开发框架,比如 Apache Cocoon(一种使用而且充分利用了XML强大功能的发布框架),则让 JavaScript 的应用越来越多,使其不止限于是一种用于制作 Web 页面的简单脚本。
JavaScript库作用及对比
JavaScript库能帮助你轻松建立有高难度互动的web2.0特性的富客户端页面,它带有很多预定义的对象和实用函数。下面是目前几种流行的JavaScript库的介绍和对比:
Prototype (http://www.prototypejs.org/)
这个算是最早成型的JavaScript库之一,它对JavaScript的内置对象(如String对象、Array对象等)做了大量的扩展。现在很多项目中都使用它,但这很大程度上是由于以前项目用了,现在不得不继续沿用。这个库可以看做是把很多好的有用的JavaScript的方法组合在一起的一个JS库,你甚至可以在你需要的时候随时将其中的几段代码抽出来放进自己的脚本里。但也正是由于它成型年代早,在整体对于面向对象的编程思想把握上并不是很到位,导致了结构的松散。
Dojo (http://dojotoolkit.org/)
Dojo强大之处在于它提供了很多其他JavaScript库所没有提供的功能。比如离线存储的API、生成图标的组件、基于SVG/VML的适量图形库、Comet支持等等很多优点。是非常适合企业级应用的一款JavaScript库。同时它也得到了一些大公司的支持,如IBM、SUN、BEA等。同时它的缺点也是很显著的:学习曲线陡,文档不齐全,最要命的就是API不稳定,每次升级都可能导致已有的程序失效。但从它的1.0版以后看起来,情况有所好转。未来是个很有潜力的库
YUI (http://developer.yahoo.com/yui/)
这套库是Yahoo打造出来的JavaScript库。全名是The Yahoo! User Interface Library 。它提供了一些比较丰富的关于DOM操作、Ajax应用等一系列的封装。同时它还包括了几个核心的CSS等。是一套比较齐全完备的富交互网页程序工具集。本身的文档极其完备,以至于很少看到第三方写相应的文章。本身的代码编写也非常的规范,扩展性也很不错的一套库。
ExtJS (http://www.extjs.com/)
ExtJS,也常简称Ext。原本是对YUI的一个扩展,主要是用于创建前端用户界面,它提供了极其丰富的组件。如今已经发展到可以利用包括jQuery在内的多种JavaScript框架作为基础库,而Ext作为界面的扩展库来使用。但由于侧重于界面,所以本身比较臃肿,不压缩的话文件上兆(MB),所以使用之前请先考虑。请注意,Ext并非完全免费的,如果用于商业用途的话,是要付费获得授权许可的。
MooTools (http://mootools.net/)
这是一套轻量级的JavaScript库,是一个简洁,模块化,面向对象的JavaScript框架。其语法几乎跟Prototype一样,但却提供了更强大的功能和更好的扩展性及兼容性。其模块化思想非常优秀,核心代码只有8K。用到什么模块可即时导入,即使是完整版也不超过160K。还有它彻底完全的面向对象的编程思想,语法简洁直观,文档完善。
jQuery (http://jquery.com)
本书的重点jQuery也同样是一个轻量级的库,它拥有强大的选择器,出色的DOM操作,可靠的事件处理、出色的兼容性,以及链式操作等等,这些优点吸引了一批批JavaScript开发者去学习它、研究它。下一节将具体介绍jQuery的优势。
jQuery的优势
jQuery强调的理念是写的少,做的多(write less, do more)。其独特的选择器、链式的DOM操作方式、事件绑定机制、封装完善的Ajax都是其它JavaScript库望尘莫及的。
(1)轻量级。jQuery非常轻巧,采用Dean Edwards的Packer(http://dean.edwards.name/packer/)压缩后,只有不到30KB的大小,如果服务器端启用gzip压缩后,甚至只有16KB的大小!
(2)强大的选择器。jQuery可以让操作者使用从CSS 1到CSS 3几乎所有的选择器,以及jQuery独创的高级而复杂的选择器。如果你需要,还可以加入插件使其支持XPath选择器!下一章我们将为你详细讲解jQuery中强大的选择器。
(3)出色的DOM操作的封装。jQuery封装了大量常用DOM操作,使你编写DOM操作相关程序的时候能够得心应手,优雅的完成各种原本非常复杂的操作,让JavaScript新手也能写出出色的程序。第三章将为你重点介绍jQuery中优雅的DOM操作。
(4)可靠的事件处理机制。jQuery的事件处理机制吸取了JavaScript专家Dean Edwards编写的事件处理函数的精华,使得jQuery处理事件绑定的时候相当的可靠。在预留退路(graceful degradation)方面,jQuery也做的非常不错。第四章将为你重点介绍jQuery中的事件处理。
(5)完善的Ajax。jQuery将所有的Ajax操作封装到一个函数$.ajax里,使得我们处理Ajax的时候能够专心处理业务逻辑而无需关心复杂的浏览器兼容性和XMLHttpRequest对象的创建和使用的问题。第六章将为你重点介绍jQuery中的Ajax处理。
(6)不污染顶级变量。jQuery只建立一个名为jQuery的对象,其所有的方法都在这个对象之下。另外的一个别名$也是可以随时交出控制权的。绝对不会污染其它的对象!
(7)出色的浏览器兼容性。作为一个流行的JavaScript库,浏览器的兼容性自然是必须具备的条件之一。jQuery能够在IE 6.0+、FF 2+、Safari 2.0+和Opera 9.0+下正常运行。同时修复了一些浏览器之间的差异。使你不用在开展项目前忙于建立一个浏览器兼容库而焦头烂额。
(8)链式操作方式。jQuery中最有特色的莫过于它的链式操作方式——即对发生在同一个jQuery对象上的一组动作,可直接连写而无需重复获取对象。这一点使jQuery的代码无比优雅。请注意,在章节1.3.3中,我们将要讨论相应代码风格的问题。
(9)行为层与结构层的分离。开发者不需要再去html调用事件,而是直接使用jQuery选择器选中元素,然后直接给元素添加事件。
(10)丰富的插件支持。任何事物的壮大,如果没有很多人的支持,是永远发展不起来的。jQuery的易扩展性,吸引了来自全球的开发者来共同编写jQuery的扩展插件。目前已经有超过几百种的官方插件支持。在第七章,我们将介绍目前流行的几款插件并指导大家动手编写自己的插件。
(11)完善的文档。jQuery的文档是非常丰富的,现阶段多为英文文档,而中文文档较少。当然,很多热爱jQuery的团队都在为这个努力,比如图灵教育翻译的《Learning jQuery》。
(12)开源。jQuery是一个开源的产品,任何人都可以自由的使用。