我们到底需不需要 jQuery

曾经,在那个 IE6 还是主流浏览器的时代,为了实现稍微复杂一点的功能,也需要很多代码。如果要做到兼容主流浏览器,更需大费周章。当 jQuery 出现后,使用 jQuery 实现同样的功能,我们只需写很少的代码,并且兼容主流浏览器。于是,大部分网站都会使用 jQuery。

时过境迁,我们到底需不需要 jQuery 呢?

认为不需要 jQuery 的理由如下:

  • IE7 及更低版本的浏览器的市场份额已经低到忽略的地步。而用 IE8 及更高版本的浏览器的原生 API 来实现 jQuery 提供的功能并不是很麻烦。比如:
/* 选取元素 */
// IE8+
document.querySelectorAll(选择器);

// jQuery
$(选择器);


/* Ajax */
// IE8+
var request = new XMLHttpRequest();
request.open('GET', '/my/url', true);

request.onreadystatechange = function() {
  if (this.readyState === 4) {
    if (this.status >= 200 && this.status < 400) {
      // Success!
      var resp = this.responseText;
    } else {
      // Error :(
    }
  }
};

request.send();
request = null;

// jQuery
$.ajax({
  type: 'GET',
  url: '/my/url',
  success: function(resp) {

  },
  error: function() {

  }
});


/* 绑定事件 */
// IE8+
function addEventListener(el, eventName, handler) {
  if (el.addEventListener) {
    el.addEventListener(eventName, handler);
  } else {
    el.attachEvent('on' + eventName, function(){
      handler.call(el);
    });
  }
}

addEventListener(el, eventName, handler);

// jQuery
$(el).on(eventName, eventHandler);
  • 用 jQuery 做页面的交互的做法是,当数据改变时,选择数据对应的 DOM,然后修改 DOM。如果 HTML 发生改变,如某元素的 id 改了, 而 jQuery 是通过 id 来找那元素的,那 jQuery 的代码也需要修改。而且,如果页面的数据与 DOM 的交互很复杂,用 jQuery 还满麻烦的。在这些情况下,用 MVVM 的框架是个不错的选择: MVVM 做页面的交互的做法是,在 HTML 中,设置好了 DOM 与数据的关系。当数据改变时,框架会更新 DOM。

认为需要 jQuery 的理由如下

  • jQuery 的有丰富的插件库。
  • 不少现代的框架依赖 jQuery,如 Bootstrap 的 JS 插件,Ember,Meteor JS。如果要用那些框架,就不得不用 jQuery。
  • 用 jQuery 比用原生的 API 好学,好用,强大,简洁, 还不需要考虑浏览器兼容性问题。
  • jQuery 的开发仍在继续中。并且与时俱进的增加了一些新特性。比如,jQuery 3 增加允许用 for... of 来遍历 jQuery 集合的 DOM 元素。如
var $inputs = $('input');
var i = 0;

for(var input of $inputs) {
   input.id = 'input-' + i++;
}

那么,我们到底需不需要 jQuery 呢? 其实还是要根据具体项目来定。对我来说,对于一般的项目,我都会用 jQuery,毕竟 jQuery 大小不大,比如,jquery-3.0.0-beta1.min.js 在没 gzip 压缩前也就 86 KB。

参考链接


本文遵守创作共享CC BY-NC-SA 4.0协议 网络平台如需转载必须与本人联系确认。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HTML5学堂

如何让旧浏览器支持HTML5新标签

HTML5学堂:开发永远和理论不相同,一旦考虑IE低端浏览器,所有的HTML5新增功能都成了浮云~~~从HTML5新增标签的语义角度来说,是有利于网站SEO的,...

32770
来自专栏互联网软件技术

本地多图上传预览

23520
来自专栏夏时

两款 Js 插件为你的网站添彩

在网页中合理的利用一些特效能带给人眼前一亮的感觉。今天给大家分享两款很有意思的 Js 特效插件。

47490
来自专栏吴老师移动开发

【iOS开发】iOS 动画详解

在移动开发中,为了提高用户体验,会用到一些动画来提高应用的视觉效果。让人有眼前一亮的感觉。同时有动画的过渡过程,会让应用看起来不是那么的生硬,更吸引用户。

29760
来自专栏互联网杂技

移动端开发的一些技巧

开篇语 最近接手了一个移动端的项目。个人感觉是自己做得比较快而且比较健壮的一个。。。移动端最主要就是页面要适用不同的手机屏幕,ipad等。下面就分享一些技巧,让...

321100
来自专栏24K纯开源

Qt Style Sheet实践(一):按钮及关联菜单

导读      正如web前端开发中CSS(Cascade Style Sheet)的作用一样,Qt开发中也可以使用修改版的QSS将逻辑业务和用户界面进行隔离。...

45450
来自专栏大数据钻研

使用CSS完成元素居中的七种方法

在网页上使 HTML 元素居中看似一件很简单的事情. 至少在某些情况下是这样的,但是复杂的布局往往使一些解决方案不能很好的发挥作用。 在网页布局中元素水平居中...

29340
来自专栏IMWeb前端团队

自定义字体

本文作者:IMWeb 结一 原文出处:IMWeb社区 未经同意,禁止转载 概述 一般来说,网页上的字体使用的都是我们电脑里面的字体,比如我们常说的微软...

636100
来自专栏Flutter入门到实战

Android适配全面总结(一)----屏幕适配

版权声明:本文为博主原创文章(部分引用他人博文,已加上引用说明),未经博主允许不得转载。https://www.jianshu.com/p/7aa34434ad...

23140
来自专栏進无尽的文章

绘图-视图遮罩MaskView的使用

可以这样理解,是将maskView每个point的alpha赋值给View的重叠部分相对应的point,这样view的重叠每个point都有个alpha值了,v...

15720

扫码关注云+社区

领取腾讯云代金券