已经过时了。
略做点补充:
Zepto也是过时货了。还有Underscore/Lodash等,也是过时了。
但是过时不代表你就一定不可以再用,或者要从现有项目中清除抛弃掉。项目维护和管理本身是另一回事情,并不是完全由技术因素决定的。
下面稍微讲下为什么已经过时。说这个你得知道jQuery提供的核心价值是什么。
我总结有几点:
1. 发扬光大了$和CSS选择器的天才idea(尽管都不是发明者)
2. 处理浏览器的兼容性问题和各种bug
3. 链式调用为核心的DSL(此为jQuery独创)
4. 基于jQuery的生态(大量插件,各种工具如IDE也对其有良好支持)
看一下前两点,
1. 新的DOM标准(借鉴jQuery)加入了许多新的方法,覆盖了绝大部分use cases;
2. 目前主流浏览器的兼容性已经大幅提高,且因为都是Evergreen browsers了,所以以后也不太会出现严重的兼容性问题了;此外新标准比以往要更详尽清晰,出现不一致和bug的机率也小了;
实际上这前两点也不是一蹴而就的,而是一直在改进。比如原生querySelector API普及之后,才出现了Zepto。只不过这两年发展加速,以至于Zepto还没取代jQuery,就要一起过时了。
当然,现在仍然有兼容性问题,比如老浏览器不支持那些新的DOM方法,还有bug问题始终会有的。怎么办?我四年前写的《关于国内前端和JS技术发展的乱想》就给出了答案:
另外一个我认为非常广阔的领域是dom。是的,始终是。
尽管我之前说过了,大框架没有机会。但是注意到一点,jQuery等仍然是建立在前ES5前HTML5时代的。因此那些库其实都干了大量重复的事情。真正有益的是把这些事情做一次,做好它,怎么做好?不是发明各种自己的api,而是大家努力按照html5的规范,去尽量实现一套一致的符合html5语义的底层dom api。
……
以html5规范和语义为准。时刻记得避免夹带私货。此库的最高境界是只作为给浏览器打patch用,也就是一个patch框架加patch实现。
2011年时polyfill这个词还没怎么流行,但是你们可以看到我讲的就是polyfill。不同的是,当时可能还比较前卫的理念,4年后的今天,几乎所有新API都有polyfill/shim实现,所以不再仅仅是理念,而已经有大量非常成熟的实践了。
但直到去年,我一直没说可以抛弃jQuery,那就是因为第三点(基于链式调用的DSL)。即使新的query接口已经直接返回Element数组,因此可链式调用forEach/map之类的方法,但总体上,标准DOM API体系仍然无法像jQuery一样提供一致且(插件)可扩展的链式调用DSL。