为什么我在2019年仍在使用jQuery?


许多人提倡“只使用vanilla JavaScript,你不需要jQuery”。
其实我觉得许多JavaScript API - 特别是DOM API - 很糟糕。 el.insertAdjacentElement('afterend', other)无疑是有效的,但$(el).after(other)实际上是方便的,比DOM给我们的要好得多。
标准JavaScript API中的许多常见操作都很尴尬;,你仍然需要辅助函数来执行各种常见任务。
添加任何依赖性都带来了复杂性和文件大小的成本,但jQuery并不是那么大:默认构建是30K缩小/压缩,如果没有ajax的自定义构建和不常见的只有大小23K,使用querySelector而不是SizzleJS的构建是17K 。原来的30K和优化的17K对于我来说似乎都是可以接受的。
你可以看一下Bootstrap删除jQuery的例子,说明使用vanilla JS需要付出多少努力:他们编写了自己的帮助器,不得不放弃IE支持,因为它太难添加,使得API不兼容(“我们打破了一切“),我花了一年半的时间研究它。如果我看一下最终结果,我真的不能说它好多了。
我理解他们为什么这样做; 人们想使用Bootstrap和Vue.js等等,使用Vue.js和jQuery有点傻。我非常赞成减少“网络臃肿” ,但我们需要务实和现实。包括~17K的jQuery真的那么糟糕吗?

有一些很好的理由不使用jQuery:如果你正在编写你想要被其他人重用的代码,或者你只是编写一个小函数。
使用“jQuery所有的东西”可能不是一个好主意,但也不是 “unjQuery所有的东西”。
我没有和jQuery结婚,我很乐意使用一个“jQuery light”,它可以修复JS API,更加可口。YMNJQ推荐使用bonzo 和$ dom,还有其他几个用于AJAX等等,但许多似乎没有维护。此外,每个人都已经知道了jQuery。为什么要用其他东西替换它,除非有令人信服的理由?

有些读者可能会想“关于Vue.js,React或其他一些现代框架呢?”这篇文章的目的是将vanilla JavaScript与jQuery进行比较,而不是提出一个Grand Unified Theory of Frontend Development 。

话虽如此,我认为有几个理由坚持使用简单的JavaScript; 主要是因为我想构建快速的网页,使用最简单的可行代码,并尽可能多的人访问。根据我的经验,服务器端生成的模板轻轻地撒上“渐进增强”风格的JavaScript通常是最好的方法。它通常更容易开发,往往更快,往往有更少的错误。

从根本上说,我认为网络是一个查看文档而不是操作系统的系统。即使对于许多“网络应用程序”(无论你的意思是什么),文档方法都能很好地工作。