所以我最近才知道把你的js放在DOM的底部是过时的,我应该再次将它们放在<head>
中,并带有“async”和“defer”属性
大。但是,基于优先级,我对应该使用哪种方式感到有点困惑。
所以我有:
哪个应该异步,哪个应该推迟?
如果我理解了这一切,那些不会对网站外观产生直接影响的应该推迟,而其他一切都会异步。正确?或者我把这些搞混了。
答案 0 :(得分:10)
这很简单。您应该将[async]
用于可以按任何顺序执行的脚本,将[defer]
用于必须在解析HTML之后执行的脚本。
例如,如果您的帖子旁边添加了社交分享图标,并且此脚本不依赖于任何其他脚本,则可以同时使用[async]
和[defer]
。但是如果你的脚本需要jQuery,你就不能使用[async]
,因为如果这样做,可能会发现它在加载jQuery之前被执行并且它会中断。
如果您的所有脚本都需要jQuery,那么您根本不应该使用[async]
。对于[defer]
,它取决于您的脚本是否访问DOM。对于插件而言,它可能并不重要,但您可能需要它来代码。
如果您将脚本包装在$(document).ready();
中,则可以将[defer]
用于不会立即生效的脚本(例如,需要用户互动)。