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 相关文章推荐
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
Oct 31 Javascript
详解Angularjs filter过滤器
Feb 06 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
Apr 14 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
VUE JS 使用组件实现双向绑定的示例代码
Jan 10 Javascript
详解在vue-cli项目中安装node-sass
Jun 21 Javascript
js实现图片放大展示效果
Aug 30 Javascript
微信小程序实现漂亮的弹窗效果
May 26 Javascript
jQuery.validate.js表单验证插件的使用代码详解
Oct 22 jQuery
微信小程序实现单选功能
Oct 30 Javascript
Node.js 实现远程桌面监控的方法步骤
Jul 02 Javascript
JS实现刷新网页后之前浏览位置保持不变示例详解
Aug 14 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导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
vue生成token并保存到本地存储中
2018/07/17 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
python去掉空白行的多种实现代码
2018/03/19 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
django session完成状态保持的方法
2018/11/27 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
最小二乘法及其python实现详解
2020/02/24 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
介绍一下Ruby的特点
2013/01/20 面试题
秘书行业自我鉴定范文
2013/12/30 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
教师工作表现自我评价
2015/03/05 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
2015年药店工作总结
2015/04/20 职场文书
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏