在You may not need jQuery (Maybe you don't need jQuery) 中区分了两种情况,一种是在应用程序本身中使用,另一种是包含 jQuery 作为库要求。我将使用 jQuery 作为库要求的情况超出了这个问题的范围,因为否则它会太宽泛。这个问题的重点是在应用程序本身中使用 jQuery。
该参考资料建议尽可能使用 jQuery,但是 Stack Overflow 上有一些问题要求使用纯 JavaScript 获得答案。
今天在西班牙语的 Stack Overflow 上有一个问题,目前有两个答案,一个是 jQuery,另一个是纯 JavaScript。这个问题不是要说两个答案中哪个更好,而是要更好地理解在 Web 应用程序中使用 jQuery 的含义。
我在上面提到,使用 jQuery 作为库要求的情况不在这个问题之列,所以它不是太宽泛。我还要求不要将 jQuery 与其他类似的库进行比较。
为了使响应符合客观和非基于意见的要求,它们必须包括经过证实的方法/技术论据,重点是使用或不使用 jQuery 的含义。
你可能不需要jQuery的引入翻译
jQuery 和它的表亲非常棒,如果它们能让你的应用程序开发变得更容易,当然应该使用它们。
但是,如果您正在开发一个库,请花点时间考虑一下您是否真的需要 jQuery 作为依赖项。也许您可以包含几行有用的代码并放弃要求。如果您只是将库定位到较新的浏览器,那么除了浏览器已经附带的内容之外,您不需要任何东西。
至少,确保您知道jQuery 为您做什么,以及它没有做什么。一些开发人员认为 jQuery 可以保护我们免受浏览器不兼容的影响,而事实上,IE8 之后的浏览器本身很容易处理。
答案是否定的。当您使用库或框架时,想到的问题是:
显然,你的脑海中有几十个理由,最终,促使你在其中一个或另一个之间做出选择的是你的需求。当jquery诞生时,使用 JavaScript 进行跨平台开发的方式简直就是一场噩梦,在大多数情况下,您必须考虑很多事情并为每个浏览器编写代码。可以说,jquery是作为IE6的polyfill诞生的。
从那时起,情况发生了很大变化。负责规范的委员会开始工作,社区开始创建越来越多的库和框架;Virtual DOM 、响应式编程、数据绑定等新概念开始普及。
在我看来,用于专业级现代 Web 开发的jquery已经完全过时了。有些人会不同意,有些人会。我认为现在不再需要直接处理 DOM;事实上,滥用它会对应用程序的性能产生负面影响。使用jquery ,您可以彻底地做到这一点,因为它是为此而创建的,如果已经过多地操作 DOM 可能意味着性能不佳,那么使用 jQuery 您会残酷地减少 ops/s。如今,已经出现了新技术,可以提供值得使用的更好的解决方案。技术生态系统的发展总是会改善已经存在的东西。
答案将取决于项目的规模;对于小项目,es6及以上就够用了,绰绰有余;对于中型和大型项目,最好依靠一个有效的框架,这意味着更少的开发工作/时间和更灵活的开发模型。
答案可以用另一个问题来回答:是否有更好的选择可以让我以更有效和动态的方式做同样的事情?
我认为使用jquery还取决于您对javascript的经验水平;显然对于纯粹的后端程序员来说,使用jquery会比使用vue.js或reactjs和redux容易得多;但是,如果我们坚持客观现实,最好尽可能使用意味着更高生产力并为我们提供更大好处的替代方案,例如代码质量、效率、可扩展性等。
事实是,前端开发已经有了长足的发展,老问题的新解决方案已经出现,更高效、更紧凑、更简洁的解决方案;这就是为什么诞生了彻底改变前端开发的框架,例如reactjs或vue.js。
正如他们在这个世界上所说的那样……为正确的工作使用正确的工具。
它们之间在使用上有几个冲突
jQuery
:不必要的依赖“我真的需要
jQuery
吗?”安全性,有几十种使用假的攻击
jQuery
性能,虽然 jQuery 确实很快,但代码分叉和特征检测会导致惩罚,更不用说关于 DOM2 特征的包装器,其中堆栈跟踪更广泛
https://jsperf.com/jquery-vs-javascript-performance-comparison/22
加载页面的惩罚,如果你使用稳定的小版本
jQuery 1.7
,它的缩小版只有1Kib
它的jQuery 3.0
重量87Kib
!超级马里奥兄弟只称重31Kib
!比jQuery 3.0
...少 3 倍,87Kib
仍然需要解析和解释,导致页面加载滞后额外的数据消耗(仅适用于移动设备) 手机通常使用
planes de datos
电话服务公司提供的,这些planes
都有服务费,所以当您的页面加载时,如果用户使用没有系统的浏览器(荒谬jQuery 3.0
),则不必要地消耗这些资源caché
今天,但假设有一个),对于您网站的每个页面,您将花费87Kib
,也就是说,如果您的用户进入和离开页面几次1024
,他将只消耗87 Mib
加载jQuery
...额外的学习曲线
含糖的语法,含糖的语法
jQuery
恶化$(TODO)
了代码的可读性,更不用说对所有东西都使用匿名函数的荒谬和过度使用。一般来说,最好不要使用 jQuery,如果你使用它,最好只提取必要的模块
为了完成前面的答案,我必须补充一点,今天(2018 年 4 月),Angular、React、Vue 等其他框架和 Typescript、WebPack 和 Babel.js 等工具的流行意味着我们不需要以经典方式访问 DOM,或者我们不必担心不同浏览器与 W3C 标准之间的不兼容问题。
事实上,将 Angular 或 React 与 jQuery 混合使用完全适得其反,因为这些框架以非常不同的方式处理组件生命周期,而 jQuery 的潜在干扰只会让任何开发人员的生活变得困难。
jQuery 已经从一个库变成了一个快速发展的世界中的一种选择。