JQuery优缺点分析说明


Posted in Javascript onJune 09, 2010

1、jQuery实现脚本与页面的分离

在HTML代码中,我们还经常看到类似这样的代码:

<form id="myform" onsubmit=return validate();" > 即使validate()函数可以被放置在一个外部文件中,实际上我们依然是把页面与逻辑和事件混杂在一起。jQuery让你可以将这两部分分离。借助于jQuery,页面代码将如下所示:

<form id="myform"> 接下来,一个单独的JS文件将包含以下事件提交代码:

$("myform").submit(function() { 
...your code here 
)}
这样我们可以实现灵活性非常强的清晰页面代码。jQuery让JavaScript代码从HTML页面代码中分离出来,就像数年前CSS让样式代码与页面代码分离开一样。

2、最少的代码做最多的事情

最少的代码做最多的事情,这是jQuery的口号,而且名副其实。使用它的高级selector,开发者只需编写几行代码就能实现令人惊奇的效果。开发者无需过于担忧浏览器差异,它除了还完全支持Ajax,而且拥有许多提高开发者编程效率的其它抽象概念。jQuery把JavaScript带到了一个更高的层次。以下是一个非常简单的示例:

$("p.neat").addClass("ohmy").show("slow");

通过以上简短的代码,开发者可以遍历“neat”类中所有的<p>元素,然后向其增加“ohmy”类,同时以动画效果缓缓显示每一个段落。开发者无需检查客户端浏览器类型,无需编写循环代码,无需编写复杂的动画函数,仅仅通过一行代码就能实现上述效果。

3、性能

在大型JavaScript框架中,jQuery对性能的理解最好。尽管不同版本拥有众多新功能,其最精简版本只有18KB大小,这个数字已经很难再减少。jQuery的每一个版本都有重大性能提高。本篇文章讲的是jQuery未经过任何优化的原始速度。如果将其与新一代具有更快JavaScript引擎的浏览器(如火狐3和谷歌Chrome)配合使用,开发者在创建富体验Web应用时将拥有全新速度优势。

4、它是一个“标准”

之所以使用引号,是以为jQuery并非一个官方标准。但是业内对jQuery的支持已经非常广泛。谷歌不但自己使用它,还提供给用户使用。另外戴尔、新闻聚合网站Digg、WordPress、Mozilla和许多其它厂商也在使用它。微软甚至将它整合到Visual Studio中。如此多的重量级厂商支持该框架,用户大可以对其未来放心,大胆的对其投入时间。

5、插件

基于jQuery开发的插件目前已经有大约数千个。开发者可使用插件来进行表单确认、图表种类、字段提示、动画、进度条等任务。jQuery社区已经成长为一个生态系统。这一点进一步证明了上一条理由,它是一个安全的选择。而且,jQuery正在主动与“竞争对手”合作,例如Prototype。它们似乎在推进JavaScript的整体发展,而不仅仅是在图谋一己之私。

6、节省开发者学习时间

当然要想真正学习jQuery,开发者还是需要投入一点时间,尤其是如果你要编写大量代码或自主插件的话,更是如此。但是,开发者可以采取“各个击破”的方式,而且jQuery提供了大量示例代码,入门是一件非常容易的事情。我建议开发者在自己编写某类代码前,首先看一下是否有类似插件,然后看一下实际的插件代码,了解一下其工作原理。简而言之,学习jQuery不需要开发者投入太多,就能够迅速开始开发工作,然后逐渐提高技巧。

7、让JavaScript编程变得有趣

我发现使用jQuery是一件充满乐趣的事情。它简洁而强大,开发者能够迅速得到自己想要的结果。它解决了许多JavaScript问题和难题。我过去曾讨厌JavaScript编程,但现在却非常喜欢它。通过一些基础性的改进,开发者可以真正去思考开发下一代Web应用,不再因为语言或工具的差劲而烦恼。我相信它的“最少的代码做最多的事情”口号。

jQuery的不足之处

当然,jQuery并非完美无缺。截止到目前我所发现的jQuery不足之处包括:

◆不能向后兼容。每一个新版本不能兼容早期的版本。举例来说,有些新版本不再支持某些selector,新版jQuery却没有保留对它们的支持,而只是简单的将其移除。这可能会影响到开发者已经编写好的代码或插件。

◆插件兼容性。与上一点类似,当新版jQuery推出后,如果开发者想升级的话,要看插件作者是否支持。通常情况下,在最新版jQuery版本下,现有插件可能无法正常使用。开发者使用的插件越多,这种情况发生的几率也越高。我有一次为了升级到jQuery 1.3,不得不自己动手修改了一个第三方插件。

◆在同一页面上使用多个插件时,很容易碰到冲突现象,尤其是这些插件依赖相同事件或selector时最为明显。这虽然不是jQuery自身的问题,但却又确实是一个难于调试和解决的问题。

◆jQuery的稳定性。它没有让我的浏览器崩溃,我这儿指的是其版本发布策略。jQuery 1.3版发布后仅过数天,就发布了一个漏洞修正版1.3.1。他们还移除了对某些功能的支持,可能会影响许多代码的正常运行。我希望类似修改不要再出现。

◆在大型框架中,jQuery核心代码库对动画和特效的支持相对较差。但是实际上这不是一个问题。目前在这方面有一个单独的jQuery UI项目和众多插件来弥补此点。

如果你还在犹豫是否要学习一个JavaScript框架,并困惑于选择哪一个框架,那么我推荐你选择jQuery。这并非说其它框架不好,只是jQuery可能是最稳妥和最具回报性的选择。

Javascript 相关文章推荐
JavaScript网页制作特殊效果用随机数
May 22 Javascript
顶部缓冲下拉菜单导航特效的JS代码
Aug 27 Javascript
如何用JavaScript定义一个类
Sep 12 Javascript
js实现照片墙功能实例
Feb 05 Javascript
JavaScript 封装一个tab效果源码分享
Sep 15 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
Aug 16 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
Mar 30 Javascript
基于three.js编写的一个项目类示例代码
Jan 05 Javascript
Koa项目搭建过程详细记录
Apr 12 Javascript
手把手带你封装一个vue component第三方库
Feb 14 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
VUE : vue-cli中去掉路由中的井号#操作
Sep 04 Javascript
web页面数据展示新想法(json)
Jun 08 #Javascript
js客户端快捷键管理类的较完整实现和应用
Jun 08 #Javascript
location.search在客户端获取Url参数的方法
Jun 08 #Javascript
js word表格动态添加代码
Jun 07 #Javascript
Extjs中常用表单介绍与应用
Jun 07 #Javascript
javascript调试说明
Jun 07 #Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
Jun 07 #Javascript
You might like
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
vue组件化中slot的基本使用方法
2019/05/01 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python中列表元素转为数字的方法分析
2016/06/14 Python
python爬取m3u8连接的视频
2018/02/28 Python
tensorflow更改变量的值实例
2018/07/30 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
pytorch中的inference使用实例
2020/02/20 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
养殖行业的创业计划书
2014/01/05 职场文书
酒店节能减排方案
2014/05/26 职场文书
关爱老人标语
2014/06/21 职场文书
商品陈列协议书
2014/09/29 职场文书
邀请函格式范文
2015/02/02 职场文书
语文教师求职信范文
2015/03/20 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android