跳到主要内容

你是否为jQuery之后的生活做好了准备?

当jQuery首次推出时,它改变了世界。它使我们能够从JavaScript中引用页面上的元素,就像我们在CSS中一样。不仅如此,它还为我们提供了这些元素的API,这些元素远远超过浏览器的价格。我们可以隐藏它们,添加和删除类,甚至编写我们自己的插件来做前所未有的事情。

它还隐藏了处理我们这个浏览器时代的复杂性。通过艰苦的修复,这些浏览器所包含的所有各种错误都得到了解决,直到您可以确信如果使用jQuery完成某些操作,它就可以正常工作。

不久之后,jQuery成了互联网的白话。在他们学习DOM本身之前,很多人都学会了它:它成为每个图书馆和工具中隐含的依赖。 JQuery永远存在。

但事情从此开始发生了变化。 JQuery在浏览器被破坏且变化缓慢的时代蓬勃发展,但这本身正在发生变化。

自IE8以来,浏览器都包括了Document.querySelector方法,它为我们提供了开箱即用的所有jQuery的杀手级功能。 IE9给了我们的addEventListener,让我们摆脱困境的onclick的onmouseover。在IE10中,JavaScript程序员被授予了班级名册对象,使我们能够添加和删除类,而无需棘手的字符串操作。

这并没有触及CSS在没有任何JavaScript的情况下可以做的所有令人惊奇的事情。 CSS终于变得强大到足以真正促进JavaScript逻辑与其表示的分离。在现代浏览器中,类可以表示事物所处的状态,CSS可以定义视觉上的含义 - 但如果您的代码被调用,则无法执行此操作。。隐藏()

除此之外,还有一些新的,功能强大的API,你无法通过jQuery自行访问:像新的MutationObserver和WebRTC这样的东西需要你与浏览器本身交谈。事实证明,这并不是那么糟糕。

使用它:不依赖它

我们可能不再需要jQuery了,但如果它让你的工作变得更容易,那么使用它会带来什么危害呢?没有!继续使用jQuery构建您的网站和应用程序。但是,如果您正在构建库,请考虑不要将其变为依赖库。

为什么?因为jQuery是一个庞大的单片库。它包括Ajax,DOM操作和选择,事件,承诺,效果和一大堆实用程序。将所有这些都集中在一个包中将我们全部锁定在jQuery的做事方式中 - 这也是10年的做事方式。

替代方案

那么我们可以使用什么呢?Q通过链接承诺和异常处理来做很棒的事情。CSS动画比使用JavaScript可以做的任何事情都要顺畅得多。不久,自定义元素将提供构建可重用组件的最佳方法。如果我们生活在一个你可以选择你想要的DOM操作库,或者你是否想要使用的世界中RSVP.js或Q或承诺,我们最终可以为所有这些问题提供更好的开源解决方案。

除此之外,jQuery插件样式将您包含的每个库放在同一个不断增长的命名空间中。一切都是$(EL).colorPicker(), 要么$(EL).chosen()。对于我们拥有真实模块的未来,这并不能很好地发挥作用。模块将使我们能够干净地分离我们的依赖项,并更轻松地创建优化的构建。无论您使用Browserify,RequireJS还是使用ECMAScript 6添加的模块,都是未来。单个全局命名空间不是。

那么我们如何实现这个勇敢的新世界呢?第一步是我们需要的所有库释放他们对jQuery的死亡控制。如果它们变得无依赖性,我们就可以开始想象构建一个没有它的现代Web应用程序。

有一个重要的警告:如果您的目标是旧版浏览器,包括IE6和7或Android 2.3,那么您还没有为这个勇敢的新世界做好准备。享受jQuery到极限,梦想未来,最后你可以说出浏览器的语言。

:Zack Bloom

扎克布鲁姆共同创立Eager.io,并努力使所有人都可以访问开源工具。他创造了YouMightNotNeedjQuery.com和他的朋友亚当施瓦茨。这篇文章最初出现在网络杂志问题255。



翻译字数超限