[译] 2019 年了,为何我还在用 jQuery?

译者按: 看来 jQuery 仍是有一些用武之地的。css

为了保证可读性,本文采用意译而非直译。翻译仅供学习探讨,不表明 Fundebug 观点。html

许多人都在提倡: “直接用原生的 JavaScript 就行了,不须要 jQuery 了”。前端

You might not need jQuery尝试告诉咱们,摆脱 jQuery 是一件很容易的事情。可是,它的第一个例子偏偏告诉咱们用 jQuery 其实也不错,由于咱们写了 10 行原生的 JavaScript 代码,其实只须要 1 行 jQuery 代码就够了。jquery

不少 JavaScript 的 API,尤为是 DOM 相关的 API,挑战了个人审美哲学,直白点说,我以为它们太糟糕了!el.insertAdjacentElement('afterend', other)固然也能够用,可是$(el).after(other)更加简洁。$()函数也没那么好看,我没有特别喜欢,可是它比原生的 API 好太多了。git

大家如何获取某个元素的 sibling 呢?到底用nextSibling仍是用nextElementSibling?它们有什么不一样?各个浏览器分别支持哪一个方法?当你忙着去 MDN 查文档的时候,我直接用 jQuery 的nextprev()就行了。github

许多经常使用的 JavaScript 的标准 API 都挺奇怪的,这里我就不列出来了,你们去You might not need jQuery看看就知道了。web

写代码的时候,咱们总会须要使用一些经常使用的帮助函数,You might not need jQuery列举了不少,使用 jQuery 能够很方便的使用这些帮助函数,这样咱们就不须要每次都去 Stack OverFlow 上去复制代码了。。。ajax

浏览器的兼容问题已经没有之前那么头疼了,可是它仍是个不小的问题,除非你以为只要 85%的用户 OK 就行。关于这个问题,你们能够阅读个人Why Hello CSS doesn’t use CSS variablesbootstrap

那么,咱们必须使用 jQuery 吗?固然不是!使用任何第三方库都是有代价的,增长了复杂度,也增长了文件大小。可是,jQuery 其实没那么大,压缩以后的大小只有 30K。若是咱们去掉 ajax 以及一些不经常使用的功能的话,就只有 23K;若是咱们使用 querySelector 替代 SizzleJS 来构建的话,则只有 17K 了。不管是 30K 仍是 17K,对许多应用来讲,这个大小都是彻底能够接受的。小程序

你们不妨看看Bootstrap removing jQuery,为了移除 jQuery,他们也是花了很多精力啊:本身撸帮助函数;放弃兼容 IE,由于太难写了;他们花了 1 年半时间来倒腾这个。最终的结果在我看来,这些努力彷佛不值得。

我理解他们为何这么作,你们但愿在 Vue 项目中使用 Bootstrap,可是同时使用 Vue 和 jQuery 的话有点傻。对于减小网页大小,我很是赞成,也很喜欢Web bloatThe Ethics of Web Performance两篇博客中的观点。可是,咱们须要实际一点,不要过于理想主义。添加 17K 的 jQuery 真的那么糟糕吗?当我吐槽 Medium 或者 New York Times 这样的网站须要的 JS 文件超过 1M 的时候,有的人会这样反驳:”莫非你还在用 56k 的带宽?“,可是,为何 17K 的 jQuery 就那么不能接受了呢?

不用 jQuery 而本身写帮助函数也能够,好比你但愿你写的函数被其余人复用,或者你写的函数特别小。可是为了避免用 jQuery,放弃向后兼容?那我以为仍是用 jQuery 得了。全部事情都用 jQuery 实现固然很差,可是任什么时候候都不用 jQuery也不是什么明智之举。

我不是 jQuery 的狂热粉丝,我也愿意使用一些简化版的 jQuery,只要它们可让 JS 的 API 更好用一点。You might not need jQuery推荐了bonzo$dom,以及其余一些 AJAX 库,可是大多数看起来没怎么维护。若是没有足够吸引人的理由,最好不要去替代 jQuery,由于 jQuery 自己没什么大毛病。

有些读者也许会去比较 Vue, React 以及其余前端框架,可是这篇博客的目的是比较 jQuery 与原生的 JavaScript,没有打算去论证整个前端到底应该如何开发。

话说回来,我以为有些场景下只使用简单的 JavaScript 也挺好的,主要缘由是我但愿网页能够足够快,可让尽可能多的人正常访问。以个人经验,使用服务端渲染,再加上渐进式加强 JavaScript,是最佳的实现方式,开发起来很简单,访问速度足够快,BUG 也不多。

难道前端框架很差吗?固然不是,没有什么绝对很差的技术,全部技术都有必定的取舍,固然也包括 jQuery。

参考

关于Fundebug

Fundebug专一于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有Google、360、金山软件、百姓网等众多品牌企业。欢迎你们免费试用

版权声明

转载时请注明做者Fundebug以及本文地址: blog.fundebug.com/2019/06/04/…

相关文章
相关标签/搜索