赞
踩
先答题:如果说过时指被需要得少了,那肯定是在过时。
但如果同意规范的一部分来自它的思想,那就「孰谓公死,凛凛犹生」。
《致敬jQuery》
Java语言让我敬重的框架,阙惟Spring;
JavaScript语言让我敬重的类库,只有jQuery。Spring的善利万物,jQuery的为道日损,都闪耀着道家清心自退的智慧光芒。
取天下常以无事,于是天下莫能与之争。
有人疑惑:jQuery做的事这么少,为什么会这么火?
我说:jQuery的火,既因为它做了一点事,更因为它没做许多事。
做事是本能,不做需要大智慧,把握好做和不做的分寸,是为进退有据。
它做的,都是最核心最要命的点,DOM操作和Ajax,浏览器兼容。
在绝大多数情况下这就够了,多了是累赘,占流量,拖速度,还累脑子。
很多好框架都过分好心了,把能想到的功能都封一遍,但大部分程序员使用它们的时候只用最核心的那个点,引入的其余部分是白占空间。
JQuery就不,它只编写20%的代码,解决你80%的问题。至于剩下那20%各个业务场景下都不同的功能,它既无力管,也不想管,相信你能解决。
jQuery省事程序员也轻松,于是大家都高兴,jQuery保住了专注,程序员保住了自由。这就是技术上所谓的低侵入,这就是道家所谓的无为。
功成事遂,百姓皆谓我自然。所以jQuery在渐渐退出历史舞台,因为它已然成了规范的一部分。
你不再需要引入jQuery了,因为它已经在浏览器中。
什么叫功成身退,天之道也?什么叫夫唯弗居,是以不去?转头望望,那边厢,Spring也正在被规范吸容。
《企业应用架构模式》不再有人阅读,因为其思想早已成为程序员的本能。我思考做事,一举一动全幻化着你的身影。你来过吗?走过吗?我只知道,我好像进步了。
略做点补充:
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问题始终会有的。
另外一个我认为非常广阔的领域是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。
然而ES6+的发展终于解决了这个问题,那就是bind operator的出现。且拜JS这一世界上最好的编程语言的强大生态所赐,这个还是草案的语言特性已经可以在生产环境里使用了!
BTW,这一语言特性也同样宣告了 Underscore/Lodash 的终结。
至于第四点,原本其实就有利有弊,比方插件体系就一直被诟病。现在直接换成了ES6 module,且jQuery的生态不再独自孤立,而是可以融入更大的JS和Web的生态,只会更好。
综上,终于可以断言 jQuery/Zepto/Underscore/Lodash 的时代已经结束了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。