JQuery优缺点分析说明


Posted in Javascript onApril 10, 2011

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 相关文章推荐
List the Stored Procedures in a SQL Server database
Jun 20 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
Mar 21 Javascript
鼠标滚轮控制网页横向移动实现思路
Mar 22 Javascript
基于jQuery选择器的整理集合
Apr 26 Javascript
jquery实现背景墙聚光灯效果示例分享
Mar 02 Javascript
单击某一段文字改写文本颜色
Jun 06 Javascript
iScroll.js 使用方法参考
May 16 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
Aug 01 Javascript
JavaScript兼容性总结之获取非行间样式案例
Aug 07 Javascript
原生js实现无限循环轮播图效果
Jan 20 Javascript
javascript闭包功能与用法实例分析
Apr 06 Javascript
vuex的使用和简易实现
Jan 07 Vue.js
基于jquery的15款幻灯片插件
Apr 10 #Javascript
再次分享18个非常棒的jQuery表格插件
Apr 10 #Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
Apr 08 #Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
Apr 08 #Javascript
javascript学习笔记(五)正则表达式
Apr 08 #Javascript
javascript学习笔记(三)显示当时时间的代码
Apr 08 #Javascript
javascript 学习笔记(一)DOM基本操作
Apr 08 #Javascript
You might like
分享一下贝贝成长进度的php代码
2012/09/14 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
Jquery submit()无法提交问题
2013/04/21 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
移动端(微信等使用vConsole调试console的方法
2019/03/05 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
Python回调函数用法实例详解
2015/07/02 Python
使用python实现tcp自动重连
2017/07/02 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
对python生成业务报表的实例详解
2019/02/03 Python
Python对列表的操作知识点详解
2019/08/20 Python
详解Django CAS 解决方案
2019/10/30 Python
浅析Python 条件控制语句
2020/07/15 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
责任胜于能力演讲稿
2014/05/20 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
违纪检讨书
2015/01/27 职场文书
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python
Python加密与解密模块hashlib与hmac
2022/06/05 Python