JQuery是继prototype之后又两个杰出的Javascript库。它是轻量的js库 ,它相容CSS3,还相容各式各样应用领域程序(IE 6.0+, FF1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及先期版将不再支持IE6/7/8应用领域程序。jQuery采使用者能更方便快捷地处理HTML(标准通用型记号词汇下的两个应用领域)、events、实现动画电影效用,并且方便快捷heard中文网站提供更多AJAX可视化。jQuery除了两个比较大的优势是,它的文件格式说明很全,而且各式各样应用领域也说得很详尽,与此同时除了许多成形的应用领域程序可选配。jQuery能够采使用者的html页面维持标识符和html内容分立,换句话说,不用再在html里面填入一大堆js来初始化指示了,只需要表述id方可。
jQuery是两个相容多应用领域程序的javascript库,中心思想是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在芝加哥的barcamp发布,招揽了来自全世界的众多JavaScript剑客加入,由Dave Methvin带领项目组进行合作开发。如今,jQuery已经成为最流行的javascript库,在世界前10000个出访最多的中文网站中,有超过55%在采用jQuery。
jQuery是完全免费、开放源码的,采用MIT许可证协议。jQuery的句法设计能使合作开发更加快捷,例如操作方式文件格式对象、选择DOM原素、制做动画电影效用、阿提斯鲁夫尔谷、采用Ajax以及其他功能。除此之外,jQuery提供更多API让合作开发人员撰写应用领域程序。其模组化的采用方式使合作开发人员能很随心所欲的合作开发出使用方便的静态或静态页面。
jQuery,简而言之,也就是JavaScript和查阅(Query),即是远距JavaScript合作开发的库。
历史
约莫在 1992 年,一家称之为 Nombas 的公司合作开发了一种叫作 C 减减(C-minus-minus,简称 Cmm)的PDPJavaScript。Cmm 另一面的经营理念很简单:两个足够多强悍能代替宏操作方式(macro)的JavaScript,与此同时维持与 C (和 C ++)足够多的关联性,以期合作开发人员能很快专业委员会。这个脚本词汇绑定在两个叫作 CEnvi 的完全免费软件中,它首次向合作开发人员展现了这种词汇的杀伤力。
Nombas 最终把 Cmm 的英文名字换成了 ScriptEase,原因是前面的部分(mm)听起来过分顽固,与此同时拉丁字母 C “令人害怕”。
当 Netscape Navigator 崭露头角时,Nombas 合作开发了两个能嵌入页面中的 CEnvi 的版。这些早期的试验被称为 Espresso Page(浓咖啡般的页面),它们代表了第两个在万维网上采用的客户端词汇。而 Nombas 丝毫没有料到它的经营理念将会成为万维网的一块重要基石。
当网上冲浪越来越盛行时,对于合作开发客户端脚本的需求也逐渐增大。此时,大部分因特网使用者还仅仅通过 28.8 kbit/s 的调制解调器连接到网络,即便这时页面已经不断地变得更大和更复杂。而更加加剧使用者痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器进行多次地往返可视化。设想一下,使用者填完两个表单,点击提交按钮,等待了 30 秒的处理后,看到的却是一条告诉你忘记填写两个必要的字段。
那时正处于技术革新最前沿的 Netscape,开始认真考虑合作开发一种客户端JavaScript来解决简单的处理问题。
当时工作于 Netscape 的 Brendan Eich,开始着手为即将在 1995 年发行的 Netscape Navigator 2.0 合作开发两个称之为 LiveScript 的JavaScript,当时的目的是在应用领域程序和服务器(本来要叫它 LiveWire)端采用它。Netscape 与 Sun 及时完成 LiveScript 实现。
就在 Netscape Navigator 2.0 即将正式发布前,Netscape 将其更名为 JavaScript,目的是为了利用 Java 这个因特网时髦词汇。Netscape 的赌注最终得到回报,JavaScript 从此变成了因特网的必备组件。
因为 JavaScript 1.0 如此成功,Netscape 在 Netscape Navigator 3.0 中发布了 1.1 版。恰巧那个时候,微软决定进军应用领域程序,发布了 IE 3.0 并搭载了两个 JavaScript 的克隆版,叫作 JScript(这样命名是为了避免与 Netscape 潜在的许可证纠纷)。微软步入 Web 应用领域程序领域的这重要一步虽然令其声名狼藉,但也成为 JavaScript 词汇发展过程中的重要一步。
在微软进入后,有 3 种不同的 JavaScript 版与此同时存在:Netscape Navigator 3.0 中的 JavaScript、IE 中的 JScript 以及 CEnvi 中的 ScriptEase。与 C 和其他编程词汇不同的是,JavaScript 并没有两个标准来统一其句法或特性,而这 3 种不同的版恰恰突出了这个问题。随着业界担心的增加,这个词汇的标准化显然已经势在必行。
2006年1月,jQuery的第两个版面世,至今已经有10年多了(注:这个时间点是截止至出书时间)。虽然过了这么久,但它依然以其简洁、灵活的编程风格让人一见倾心。在本篇文章中,我们将讲述jQuery的发展历史,让读者对jQuery有更多的了解。
在jQuery迅速发展的与此同时,一些大的厂商也看中了商机。2009年9月,微软和诺基亚公司正式宣布支持开放源码的jQuery库,另外,微软公司还宣称他们将把jQuery作为Visual Studio工具集的一部分。他将提供更多包括jQuery的智能提示、标识符片段、示例文件格式编制等内容在内的功能。微软和诺基亚公司将长期成为jQuery的使用者成员,其他成员除了Google,Intel,IBM,Intuit等公司。
2009年1月,jQuery 1.3版发布,它采用了全新的选择符引擎Sizzle,在各个应用领域程序下全面超越其他同类型JavaScript框架的查阅速度,程序库的性能也因此有了极大提升。这一版的第2个变化就是提供更多live()方法,采用live()方法能为当前及将来增加的原素绑定事件,在1.3版之前,如果要为将来增加的原素绑定事件,需要使用livequery应用领域程序,而在1.3版中,能直接用live()方法。 2005年8月,John Resig提议改进Prototype的“Behaviour”库,于是他在blog上发表了自己的想法,并用了3个例子做说明。当时John的想法很简单:他发现这种句法相对现有的JavaScript库更为简洁。但他没想到的是,这篇文章一经发布就引起了业界的广泛关注。于是John开始认真思考着这件事情(撰写语法更为简洁的JavaScript程序库),直到2006年1月14日,John正式宣布以jQuery的名称发布自己的程序库。随之而来的是jQuery的快速发展。
2006年8月,jQuery的第两个稳定版本,并且已经支持CSS选择符、阿提斯鲁夫尔谷和AJAX可视化。
2007年7月,jQuery 1.1.3版发布,这次小版的变化包含了对jQuery选择符引擎执行速度的显著提升。从这个版开始,jQuery的性能达到了Prototype、Mootools以及Dojo等同类JavaScript库的水平。同年9月,jQuery 1.2版发布,它去掉了对XPath选择符的支持,原因是相对于CSS句法它已经变得多余了。这一版能够对效用进行更为灵活的定制,而且借助新增的命名空间事件,也使应用领域程序合作开发变得更容易。与此同时,jQuery UI项目也开始启动,这个新的套件是作为曾经盛行但已过时的Interface应用领域程序的代替项目而发布的。jQuery UI中包含大量预表述好的部件(widget),以及一组用于构建高级原素(例如可拖放、拖拽、排序)的工具。2010年2月,jQuery 1.4.2版发布,它新增了有关事件委托的两个方法:delegate()和undelegate()。delegate()用于代替1.3.2中的live()方法。这个方法比live()来的方便快捷,而且也能达到静态添加事件的作用。比如给表格的每个td绑定hover事件
特点
1.静态特效
2.AJAX
3.通过应用领域程序来扩展
4.方便快捷的工具 – 例如应用领域程序版判断
5.渐进增强
6.链式初始化
7.多应用领域程序支持,支持Internet Explorer6.0+、Opera9.0+、Firefox2+、Safari2.0+、Chrome1.0+(在2.0.0中取消了对Internet Explorer6,7,8的支持)
历史版
jQuery 1.0
(2006年8月):该库的第两个稳定版,已经具有了对CSS选择符、阿提斯鲁夫尔谷和AJAX可视化的稳健支持。
jQuery 1.1
(2007年1月):这一版大幅简化了API。许多较少采用的方法被合并,减少了需要掌握和解释的方法数量。
jQuery 1.1.3
(2007年7月):这次小版变化包含了对jQuery选择符引擎执行速度的显著提升。从这个版开始,jQuery的性能达到了Prototype、Mootools以及Dojo等同类JavaScript库的水平。
jQuery 1.2
(2007年9月):这一版去掉了对XPath选择符的支持,原因是相对于CSS句法它已经变得多余了。这一版能够支持对效用的更灵活定制,而且借助新增的命名空间事件,也使应用领域程序合作开发变得更容易。
jQuery UI(2007年9月):这个新的应用领域程序套件是作为曾经盛行但已过时的Interface应用领域程序的代替项目而发布的。jQuery UI中包含大量预表述好的部件(widget),以及一组用于构建高级原素(例如可拖放的界面原素)的工具。
jQuery 1.2.6
(2008年5月):这一版主要是将Brandon Aaron合作开发的盛行的Dimensions应用领域程序的功能移植到了核心库中。
jQuery 1.3
(2009年1月):这一版采用了全新的选择符引擎Sizzle,库的性能也因此有了极大提升。这一版正式支持事件委托特性。
jQuery 1.3.2
(2009年2月):这次小版升级进一步提升了库的性能,例如改进了:visible/:hidden选择符、.height()/.width()方法的底层处理机制。另外,也支持查阅的原素按文件格式顺序返回。
jQuery 1.4
(2010年1月14号):对标识符库进行了内部重写组织,开始建立一些风格规范。老的core.js文件被分为attribute.js,css.js,data.js,manipulation.js,traversing.js和queue.js;CSS和attribute的逻辑分立。
重要变化:
1. Ajax重写
Ajax模块完全进行了重写。新增两个jXHR对象,为不同应用领域程序内置的XMLHttpRequest提供更多了一致的超集。对于XMLHttpRequest之外的传输机制,比如JSONP请求,jXHR对象也能进行处理。(详情能参见:jQuery.ajax文件格式)
此外,系统的可扩展性大大增强,能附加各种数据处理器、过滤器和传输机制,为合作开发新的Ajax应用领域程序提供更多了方便快捷。
2. 延迟对象
延迟对象(Deferred Object,jQuery.Deferred对象)是两个可链接的(chainable)实用工具对象,实现了Promise接口,能在回调队列中注册多个回调、初始化回调队列并转发任何同步/异步函数的成败状态。正如Using Deferreds in jQuery 1.5一文中说明的,其结果是在jQuery中能够将依赖于某个任务(事件)结果的逻辑与任务本身解耦了。这一点在JavaScript中其实并不新鲜,Mochikit和Dojo等已经实现有些日子了。由于jQuery 1.5的Ajax模块内置采用了延迟对象,因此通过jQuery撰写Ajax程序将自动获得这一功能。
合作开发人员借此能采用无法立即获得的返回值(如异步Ajax请求的返回结果),而且第一次能够附加多个阿提斯鲁夫尔谷器。
例如,采用了新的jQuery内部Ajax API就能实现下面的标识符了:
// Assign handlers immediately after making the request,// and remember the jxhr object for this request var jxhr = $.ajax({ url: “example.php” }) .success(function() { alert(“success”); }) .error(function() { alert(“error”); }) .complete(function() { alert(“complete”); });// perform other work here … // Set another completion function for the request above jxhr.complete(function(){ alert(“second complete”); });
此外,采用jQuery.Deferred还能合作开发自己的延迟对象。更多详情参见:延迟对象文件格式。
3. jQuery.sub()
jQuery 1.5提供更多了一种创建和修改jQuery副本的方式。能用来添加不向外部公开的方法,或者对jQuery的某些方法进行重新表述以提供更多新功能,或者提供更多更好的封装、避免名称空间冲突。当然,也能用来合作开发应用领域程序,但Resig强烈建议在合作开发应用领域程序之前,先考虑jQuery UI widget工厂。
值得注意的是,sub函数并不提供更多真正的隔离,所有方法、数据、初始化仍然依靠jQuery本身来支持。
4. 遍历性能提高
在新版中.children(),.prev(),.next()几个常用的遍历函数性能有了显著提高。
5. 内部合作开发系统
John Resig还特别提到了jQuery项目组内部合作开发系统的两点改变:一是服务器端用Node.js替换了老的Java/Rhino系统,使得项目组能专注于JavaScript环境的新变化;二是所用的标识符优化程序从Google Closure切换到UglifyJS,新工具的压缩效用非常令人满意。
采用方法
jQuery能下载采用,有两个版的 jQuery 可供下载
Production version – 用于实际的中文网站中,已被精简和压缩。
Development version – 用于测试和合作开发(未压缩,是可读的标识符)
jQuery 1.8.0版时压缩前后的对比
应用领域程序机制
jQuery的官方应用领域程序是jQuery UI。合作开发人员能任意扩展jQuery的函数库或者按照自己的需求合作开发UI组件。网上已经有数以万计的jQuery应用领域程序,覆盖各式各样各样的需求。例如Ajax远距、数据表格、静态列表、XML工具、拖曳、cookie处理、弹出层等等。jQuery 的文件格式说明很全,而且各式各样应用领域也说得很详尽,与此同时除了许多成形的应用领域程序可选配,例如ComponentOne Studio for ASP NET Wijmo.
随着jQuery应用领域程序在中文网站建设过程中的采用率不断的增加,所以有必要跟进时代步伐合作开发出一些新的应用领域程序/标识符片段,以此来巩固并提高前端使用者体验,将使用者体验提升到两个新的高度。其中包括Flat jQuery Price Slider、Gmaps jQuery Map Plugin 、FormChimp——MailChimp Ajax plugin for jQuery 等。
控件
jQuery Gantt控件是两个基于原生HTML5/jQuery,功能丰富的控件,该控件真正实现了跨平台,在许多设备和应用领域程序中无缝的运行。
采用项目甘特图中内置的调度,依赖等功能实现任务分层列表的可视化。
采用资源甘特图实现两个资源利用视图。
采用基于API的jQuery或者基于API的MVC可帮您随心所欲地安装甘特图并加快应用领域速度。
可与诸如KnockOut(KO),jQuery.tmpl等盛行的jQuery模式一同采用。