译者按: 看来 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 的next
和prev()
就行了。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 variables。bootstrap
那么,咱们必须使用 jQuery 吗?固然不是!使用任何第三方库都是有代价的,增长了复杂度,也增长了文件大小。可是,jQuery 其实没那么大,压缩以后的大小只有 30K。若是咱们去掉 ajax 以及一些不经常使用的功能的话,就只有 23K;若是咱们使用 querySelector 替代 SizzleJS 来构建的话,则只有 17K 了。不管是 30K 仍是 17K,对许多应用来讲,这个大小都是彻底能够接受的。小程序
你们不妨看看Bootstrap removing jQuery,为了移除 jQuery,他们也是花了很多精力啊:本身撸帮助函数;放弃兼容 IE,由于太难写了;他们花了 1 年半时间来倒腾这个。最终的结果在我看来,这些努力彷佛不值得。
我理解他们为何这么作,你们但愿在 Vue 项目中使用 Bootstrap,可是同时使用 Vue 和 jQuery 的话有点傻。对于减小网页大小,我很是赞成,也很喜欢Web bloat与The 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专一于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有Google、360、金山软件、百姓网等众多品牌企业。欢迎你们免费试用!
转载时请注明做者Fundebug以及本文地址: blog.fundebug.com/2019/06/04/…