简介: 作为世界上使用最广泛的JavaScript 库,jQuery 帮助一代开发人员创建适合每种浏览器的网站。可以说,Web 开发之所以有今天的成就,离不开jQuery。但随着新的库、框架和范式的不断涌现,jQuery作为Web开发.转发+关注,私信小编“资讯”免费与大家分享资讯!
作为世界上使用最广泛的JavaScript 库,jQuery 帮助一代开发人员创建适合每种浏览器的网站。可以说,Web 开发之所以有今天的成就,离不开jQuery。然而,随着新的库、框架和范式的不断出现,jQuery 作为Web 开发首选工具的地位逐渐变得岌岌可危……任何事物的发展都有其兴衰,短期内jQuery 不会出现。消失了,但如何维稳、逆袭?
作者|郭丹尼译者|新月,编辑|刘静以下为翻译: jQuery 是世界上使用最广泛的JavaScript 库。在2000 年代末,jQuery 受到Web 开发社区的欢迎,该社区使用它创建了一个由众多网站、插件和框架组成的生态系统。但在过去的几年里,jQuery 作为Web 开发首选工具的地位已经被削弱。在这篇文章中,我们来看看为什么jQuery 变得流行,后来是什么导致它失宠,以及什么时候我们仍然应该选择jQuery 来创建现代网站。
jQuery 发展简史2005 年,John Resig 开发了jQuery 的第一个版本,并于2006 年在一次名为BarCampNYC 的活动上发布了它。他曾在最早的jQuery 网站上写道:jQuery 是一个Javascript 库,始终牢记自己的使命:编写Javascript 代码是一件有趣的事情。为了实现这一目标,jQuery 去除了所有不必要的标记,以简化、智能且易于理解的方式执行常见的重复任务。 jQuery 有两个主要的价值主张:首先,它提供了高效的API 来方便网页的操作。特别是,它提供了强大的选择元素的方法。除了通过id 或class 选择元素之外,jQuery 还允许使用复杂的表达式,例如根据元素与其他元素的关系来选择元素:
//选择联系人元素中人员列表中的每个项目$('#contacts ul.people li');这个选择引擎最终被抽象到一个名为Sizzle 的单独库中。第二个卖点是浏览器之间差异的抽象。当时,很难编写能够在所有浏览器上稳定运行的代码。由于缺乏标准化,开发人员必须考虑许多不同的浏览器行为和边缘情况。只需查看早期的jQuery 源代码并搜索jQuery.browser 即可查看此类示例,如下所示:
//如果使用Mozillaif ( jQuery.browser=='mozilla' || jQuery.browser=='opera' ) {//使用方便的事件回调jQuery.event.add( document, 'DOMContentLoaded', jQuery.ready ); //如果使用IE,请使用Matthias Miller 的出色hack //http://www.outofhanwell.com/blog/index.php title=the_window_onload_problem_revisited} else if ( jQuery.browser=='msie' ) {//仅当您使用时才有效document.write itdocument.write(''src=javascript:void(0)');//使用defer 脚本hackvar script=document.getElementById('__ie_init');script.onreadystatechange=function {if ( this.readyState==' Complete' )jQuery.ready;};//从内存中清除script=;//如果使用Safari } else if ( jQuery.browser=='safari' ) {//不断检查是否出现document.readyStjQuery,开发者然后可以依靠jQuery 团队来处理这些陷阱。后来,在jQuery 的帮助下,开发人员可以更轻松地采用更复杂的技术,例如动画和Ajax。渐渐地,jQuery 已经成为各个网站的标准依赖。直到今天,互联网的很大一部分仍然是基于jQuery 构建的。据W3Techs 估计,大约74% 的网站仍在使用jQuery。 jQuery的管理工作也越来越正规。 2011年,jQuery团队正式创建了jQuery理事会。 2012年,jQuery委员会成立了jQuery基金会。 2015 年,jQuery 基金会与Dojo 基金会合并,成立了JS 基金会。后来,它于2019 年与Node.js 基金会合并,成立了OpenJS 基金会。 ——jQuery 是其“最有影响力的项目”之一。
事情已经改变了。然而,近年来jQuery 的受欢迎程度有所下降。 GitHub 的网站前端不再使用jQuery,Bootstrap v5 也放弃了jQuery,因为它是Bootstrap 的“客户端对常规JavaScript 的最大依赖”(目前缩小为30KB)。 Web 开发的几个趋势削弱了jQuery 作为首选工具的地位。
浏览器由于多种原因,浏览器的差异和限制也不那么重要。首先是标准化程度的提高。主要浏览器厂商(Apple、Google、Microsoft 和Mozilla)成立了Web 超文本应用技术工作组并合作开发Web 标准。尽管浏览器在重要方面仍然存在差异,但供应商可以通过多种方式共同发展并避免无休止的战争。因此,浏览器API 变得越来越强大。例如,Fetch API 可以替代jQuery 的Ajax 函数:
//jQuery$.getJSON('https://api.com/songs.json').done(function (songs) {console.log(songs);})//nativefetch('https://api.com/songs.json').then (function (response) {return response.json;}).then(function (songs) {console.log(songs);}); querySelector 和querySelectorAll 方法也可以替代jQuery 的选择功能:
//jQueryconst fooDivs=$('.foo p'); //nativeconst fooDivs=document.querySelectorAll('.foo p');现在我们还可以使用classList来操作元素的类:
//jQuery$('#warning').toggleClass('visible');//nativedocument.querySelector('#warning').classList.toggle('visible');这个网站(http://youmightnotneedjquery.com/)列出了有jQuery 代码可以用本机代码替换的几种情况。一些开发人员仍然更喜欢使用jQuery,因为他们不知道有哪些API 可用,但随着开发人员对API 越来越熟悉,他们对jQuery 的依赖将会减少。使用本机功能还可以提高网页的性能。现在您可以使用CSS 更高效地实现许多jQuery 动画效果。第二个原因是浏览器的更新速度比过去更快。如今,除了Apple 的Safari 之外,大多数浏览器都有“常青”更新政策。这些浏览器可以在无需用户干预的情况下进行静默更新,并且不依赖于操作系统更新。这意味着用户可以更快地获得浏览器的新功能和错误修复,并且开发人员不必等待Can I Use 网站上给出的使用百分比达到可接受的水平。他们可以放心使用新功能和API,无需加载jQuery 或polyfill。第三个原因是Internet Explorer的边缘化。 Web 开发人员一直讨厌IE。一些IE 错误是众所周知的,而且由于IE 在2000 年是主流浏览器,它缺乏“常青”更新,许多人仍在使用旧版本。微软的做法加速了人们对IE的抛弃。他们在2016 年之后放弃了对IE 10 及以下版本的支持,并将IE 11 作为最后支持的版本。 Web 开发人员忽视IE 兼容性的情况越来越普遍。 2013 年,甚至jQuery 在发布2.0 版本时也放弃了对IE 8 及以下版本的支持。虽然一些特殊情况如遗留网站仍然需要IE,但使用IE的人越来越少。
新框架自从jQuery 发布以来,Web 开发中出现了大量的Web 框架。目前主流的是React、Angular和Vue。与jQuery 相比,这些框架有两个显着的优势。首先,它们可以轻松地将UI 分解为组件。这些框架旨在处理页面的呈现以及页面的更新。而jQuery通常只用于更新页面,初始页面需要由服务器提供。另一方面,React、Angular 和Vue 组件支持HTML、代码甚至CSS 之间的紧密耦合。就像我们将代码库分解为独立的函数和类一样,这些框架可以将UI 分解为可重用的组件,从而更轻松地构建和维护复杂的网站。第二个优点是这些新兴框架鼓励声明式范例,开发人员只需要描述UI 应该是什么样子,而如何实现它则留给框架。这种方法与jQuery 代码中的命令式方法形成对比。使用jQuery时,需要显式地编写修改步骤。但在使用声明式框架时,您只需要指定:“使用此数据来实现这样的用户界面”。这样,即使你记不住复杂的代码,也可以编写出无错误的代码。开发人员正在接受这些构建网站的新方法,因此对jQuery 的关注度有所下降。
何时使用jQuery?那么,我们什么时候应该选择使用jQuery呢?如果你估计项目的复杂度会很高,那么最好使用其他库或框架,因为这对于处理这种复杂度会更有帮助,比如将UI分解为组件。对于这样的网站,一开始使用jQuery 还不错,但很快就会变得混乱,您甚至不确定哪些代码影响页面的哪些部分。我以前遇到过这个问题。每当你想修改代码的时候,你都会感到隐隐约约的不安。由于jQuery 选择器依赖于服务器生成的HTML 结构,因此很难确定修改代码不会破坏其他功能。另一方面,有时您的网站只需要少量的交互式或动态内容。然而,即使在这些情况下,我仍然不建议使用jQuery,因为现在我们可以使用本机API 实现很多功能。即使我确实需要更多功能,我也会寻找特定的库,例如带有axios 的Ajax 或带有Animate.css 的动画。在这些情况下,使用这样的库通常比加载整个jQuery(仅用于某些功能)更轻量。我认为我们使用jQuery的原因是它提供了全面的功能,可以为网站前端提供全面的支持。你不必学习各种原生API或专门的库,只需阅读jQuery文档,就可以立即提高你的工作效率。 jQuery 的命令式方法可扩展性较差,但比其他库的声明式方法更简单。对于范围非常有限的网站,jQuery 开发很有意义,因为它不需要任何复杂的构建或编译过程。此外,如果您确定站点的复杂性不会增加并且您不想使用本机功能,那么jQuery 是一个不错的选择,因为本机功能肯定会比等效的jQuery 代码更冗长。还有另一种情况:你必须支持旧版本的IE。在这种情况下,jQuery 可以很好地处理占主导地位的IE 浏览器。
展望未来,jQuery短期内不会消失。 jQuery 仍在积极开发中,尽管我们有许多本机方法并且许多开发人员更喜欢使用本机API。 jQuery 帮助一代开发人员创建了适用于所有浏览器的网站。尽管jQuery 的许多方面已被新的库、框架和范例所取代,但jQuery 在Web 开发成为今天的样子方面发挥着不可或缺的作用。除非jQuery 的功能发生重大变化,否则jQuery 的使用量可能会在未来几年继续缓慢而稳定地下降。新的网站将倾向于使用更现代的框架来构建,并且jQuery 适合的情况会越来越少。对于某些人来说,网络开发工具的流失率有点令人悲伤,但对我来说,这是快速进步的标志。 jQuery 为Web 开发带来了更好的方法。而其之后的后起之秀也都在朝这个方向努力。
需要看java web、大数据、资讯:
老规矩:转发+关注,私信小编“资讯”免费与您分享资讯!