javascript - 加载脚本时何时使用 async vs defer?

标签 javascript jquery html asynchronous

所以我最近了解到,将您的 js 放在 DOM 的底部是过时的,我应该再次将它们放在 <head> 中。具有“async”和“defer”属性。

太棒了。但是我对应该根据优先级使用哪个感到有点困惑。

所以我有:

  • jquery
  • 对外观没有直接影响的 jquery 插件 页
  • 对页面外观有直接影响的 jquery 插件
  • 我自己的个人脚本,对外观有直接影响 页面,并且还依赖于 jquery

哪些应该异步,哪些应该延迟?

如果我对这一切的理解正确,那些对网站外观没有立即影响的应该被推迟,而其他一切都被异步。正确的?还是我把这些搞混了。

最佳答案

这很简单。您应该对可以按任何顺序执行的脚本使用 [async],对必须在解析 HTML 后执行的脚本使用 [defer]

例如,如果您有一个脚本可以在您的帖子旁边添加社交分享图标,并且该脚本不依赖于任何其他脚本,您可以同时使用 [async][延迟]。但是,如果您的脚本需要 jQuery,则不能使用 [async],因为如果您这样做,它可能会在 jQuery 加载之前执行并中断。

如果您所有的脚本都需要 jQuery,那么您根本不应该使用 [async]。至于[defer],就看你的脚本是否访问DOM了。对于插件,它可能无关紧要,但您可能需要它来编写您自己的代码。

如果您将脚本包装在 $(document).ready(); 中,您可以对不会立即生效的脚本使用 [defer](例如需要用户交互)。

关于javascript - 加载脚本时何时使用 async vs defer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44443870/

相关文章:

javascript - 在 HTML5 中本地存储图像

javascript - VueTable 2 $refs 对象在挂载的钩子(Hook)中为空

javascript - 如果当前通过键盘上的 Tab 键选择某个元素,如何将其触发到 'click'?

javascript - PHP、HTML 和 Jquery : Dynamic User Info

javascript - 从 CDN 与本地请求 javascript 时的 header 不同

javascript - 使用 angular 2 [formControl] 验证 *ngFor 使用的表单

javascript - 停止 shift 单击以突出显示文本

javascript - 了解事件循环

javascript - 单击按钮时在按钮上方显示 div 标签隐藏内容

javascript - jQuery 的平滑滚动在我的网站上不起作用