微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – $.ready()之前关闭正文

这不是一个真正的编码问题,更多的是一个真实世界的声明.

我以前有noted Domready事件缓慢,很慢.所以,我注意到在浏览jQuery源代码时,可以使用$.ready()来触发jQuery domeready事件.然后,我想,在关闭机构之前放置这个简单的执行脚本应该会触发所有“onDomready”监听器.是的,它的工作原理:

<script>$.ready()</script>
</body>

这里有两个示例,这一个测量在等待Domready时花费的时间:

http://jsbin.com/aqifon/10

您可以看到,Domready触发器本来是非常慢的,用户必须等待整个200-300毫秒才能在domready脚本启动之前.

无论如何,如果我们在关闭BODY标签之前放置$.ready(),我们得到:

http://jsbin.com/aqifon/16

看到不同?通过手动触发,我们可以切断100-300 ms的执行延迟.这是一个主要的事情,因为我们可以依靠jQuery来处理DOM操作,然后才能看到它们.

现在,对于一个问题,我从来没有看到过这样的建议或讨论,但仍然是一个主要的性能问题.一切都是关于优化代码本身,这当然是好的,但如果执行延迟了很长时间,用户看到“闪存的”unjQueryedContent“,这是徒劳的.

任何想法为什么不讨论/推荐更频繁?

解决方法

Any ideas why this is not discussed/recommended more frequently?

将JavaScript放在< / body>之前已经讨论了很多,如你所知,如果您正在寻找更快的页面加载,建议您使用.手动触发jQuery的处理程序其实很少讨论.为什么?嗯,我不认为有一个单一的客观答案,但我会尝试在这里概述一些可能性:

>性能不是jQuery的主要目标(anthough它绝对是一个关注),性能怪异通常会寻找更轻的库,用于跨浏览器DOM操作和事件处理,或者自己滚动.
这是一个额外的步骤,它看起来不干净. jQuery尝试干净,优雅,并且建议额外的步骤来初始化脚本听起来不像是要发生的事情.他们建议绑定就绪,所以建议强制.ready(),并忽略实际的浏览器事件看起来“错误”.关心的人可能知道在< / body>之前初始化脚本是比较快的.
>优化DOMContentLoaded听起来像浏览器供应商的任务.我不知道为什么它更慢,但也许没有太多的优化空间 – 根据我的理解,在< / body>之前调用init脚本应始终是最快的方式来初始化东西(因为它在解析容器< script>标签时立即执行,而浏览器必须在触发DOMContentLoaded之前完成对整个文件的解析).

你可能记得不久以前,通常的做法是把< script>块分散在HTML上的任何地方.网路标准运动即将到来,并推荐更加健全,务实的做法.这包括一个地方引导脚本 – 最初是window.onload,然后被认为是缓慢的问题,然后是DOMContentLoaded及其对IE8及更低版本的模拟.但是,我们仍然在StackOverflow上每天都会看到每个地方都有脚本的意大利面条HTML.所以我不知道如果推荐在身体结束之前放置脚本是一个很好的电话,因为它可能被解释为一个许可证,以在身体内的任何地方添加脚本.

最后,如果您真的关心快速加载脚本,并且您的代码不会处理DOM,则加载它的最快方法是将其放在< head>在任何样式表之前.而且我说的只是说没有银弹,没有最佳的方式来初始化脚本,这是每个场景中最快最优雅的.我认为这就是为什么社区坚持推荐一些看起来真实的东西,并倾向于创建更可维护的代码,而不是其他更好的替代品.

原文地址:https://www.jb51.cc/js/154857.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐