查看: 1107|回复: 0

[JavaScript/JQuery] "我仍然爱jQuery - 你也应该这样做"

发表于 2018-3-18 09:18:36

最近使用jQuery有一个很大的耻辱。似乎每个人都坚持要在现代JavaScript开发中避免它。最近开发人员都在谈论TypeScript,ECMA2015 +以及当月的框架风格。

原文请看:https://gitlwz.github.io/2017/11/15/js-jq/

我觉得这很愚蠢。jQuery在2017年仍然非常相关 - 这只是没有得到讨论。

jQuery不会让你的网站变慢

避免jQuery的最大原因之一,我今天看到贴出来的是,它增加了不必要的文件大小到您的网站。然而事实是,它增加到你的网站的文件大小往往不是微不足道的,或根本不存在。

很大一部分访问者已经拥有从CDN缓存的jQuery。这意味着就带宽而言,使用jQuery本质上是免费的。它不会以任何有意义的方式减缓您网站的加载时间。

即使他们没有缓存,jQuery Slim Minified + Gzipped也只有大约27KB。您的HTML标记可能会比这更大。如果你想要全功能版本的jQuery,那只有大约6KB。

webpack Externals是伟大的

webpack是现代JavaScript开发的主要部分,您应该使用它或您选择的其他模块打包器。使用jQuery 作为外部库,以便在需要时将其导入到模块中。其他工具,如Rollup,有类似的东西。

jQuery使编写代码更快

时间就是金钱。您的时间是宝贵的,客户感知价值的数量,你可以在一些计费时间内成功实施的生产特征。如果你可以在这里和那里节省30秒的时间,那么在别处编写代码几分钟后,与其他同事反对使用jQuery的耻辱相比,毫无疑问你将开始显示出显着的生产力优势。

即使你只是在一个个人项目上工作,你也应该把自己当做你的客户,努力争取最大的价值。

你应该知道慢代码

在jQuery中编写非常低效的代码是很容易的。进入门槛极低意味着存在大量非常糟糕的代码,即使在Google搜索的流行StackOverflow结果中也是如此。

这里有一个简短的(但绝对不是穷尽的)你应该知道的事情列表:

jQuery动画几乎从来都不是正确的答案。除非IE7支持是你关心的东西,CSS对于这个东西来说更好 - 在这种情况下,我经常会认为没有动画比慢速的更好。jQuery Slim中删除了动画。

$.each()或者$(someSelector).each()可以频繁地用正常的循环代替。

$.ajax()不是很好。如果你还没有使用它,Axios是相当不错的。jQuery Slim中删除了这个功能。

如果重复使用选择器,请将结果存储在变量中以备后用。查询DOM很慢。StackOverflow上的这个答案就是一个很好的例子。

同样,如果您需要对某些东西执行多个选项,请利用链接 编写比例尺的jQuery

我绝对不是建议你使用每个jQuery扩展,你可以找到只是把功能放在一起。对于非常低的预算和低流量的网站,这可以是一个合理的方法来实现几个功能,但是在代码中使用的每个jQuery扩展都可能会大大降低性能。您还需要了解您添加的库的时代。他们可能会增加很多像IE8甚至IE7( gasp )支持的膨胀。

可扩展的jQuery的主题是巨大的,可能值得一篇文章本身,但简短的版本很简单:要知道任何你使用的性能打击。如果您使用jQuery扩展来添加一些功能,请进行一些测试,看看它会减慢您的网站或应用程序的速度。如果您正在使用代码复制并从StackOverflow粘贴,请确保在使用它之前了解它在做什么。

真的,使用webpack

这是2017年,如果你不使用像webpack这样的模块捆绑软件,那么你有点落后。一个非常基本的webpack配置会给你ECMA 2015+,这意味着模块的可扩展性。这也会使您轻松生产环境。

如果你在2017年反jQuery,而不是使用某些东西来缩小/丑化你的代码来生产,我不太确定你的优先级是否正确。

与其他框架一起使用jQuery

我现在主张Vue作为我的选择框架,其他人也是如此。2016年,Vue成为增长最快的Javascript框架。Vue非常易于使用,命名规则简单,进入门槛也很低。

结合使用jQuery和Vue(通过上面提到的外部webpack)并没有真正添加很多附加功能。但是如果你在合理的范围内了解jQuery的话,可能需要花费你一小时的时间在Vanilla JS中编写代码,并允许你在几分钟内编写它。

何时实际上避免jQuery

在我看来,在大多数情况下,是否使用jQuery是一个预算意识的问题,而不是一个实际的问题。如果您是一位非常熟悉jQuery的开发人员,而且您正在开发中小型网站,那么通常可以节省大量的时间。

对于大规模的网站,你仍然可以考虑jQuery,但复杂性的问题即将开始。如果你正在一个网站上的多个人的团队工作,jQuery常常会使你的代码过于复杂,并导致一个网站的不可维护的意大利面条怪物。在这些情况下,你可能会考虑一个更严格的框架,比如Vue或者Angular,它将提供更多的基础来构建,而不是基于jQuery开发的免费游戏。 。


jQuery是伟大的。我仍然喜欢每天使用它,而且我发现它为我的项目节省了大量的时间。但是,您应该了解它对您的网站或应用程序的任何性能影响。jQuery遭受了多年的不良信息和一个经常被滥用的基于扩展的生态系统,如果你不小心,可能会使你的网站感觉像是在2007年建成的,而不是在2017年。



回复

使用道具 举报