5

我阅读了高性能网站:前端工程师必备知识,其中作者建议应将所有 JavaScript 代码外部化并放在页面底部而不是放在头部。

本示例对此进行了说明。外部脚本标签会阻止页面的下载渐进式渲染,因此解决方案是将其放在页面底部。

然而,在他的第二本书甚至更快的网站:Web 开发人员的性能最佳实践中,他谈到了内联JavaScript 标记。

内联脚本还会阻止页面的下载和呈现,因此他建议将它们也移到页面底部。但是,此行为仍会完全阻止页面的呈现,如本示例所示

为什么将外部脚本移动到页面底部可以让页面逐步呈现,而移动内联脚本会完全阻止呈现,直到脚本执行?


PS:

问题不在于为什么将 JavaScript 添加到页面底部而不是将它们放在头部。这就是为什么底部内联脚本会阻止渲染而底部外部脚本不会。

4

1 回答 1

8

在内联脚本中,运行脚本会占用时间,这可能会改变 DOM。试图在 DOM 发生变异时渲染它会造成混乱。所以渲染只发生在 JS 停止的时候,因此 DOM 是稳定的。

在等待外部脚本下载时,脚本的运行会停止,因此可以安全地渲染 DOM。在渲染完成之前,下载的 JS 不会运行。

于 2013-08-18T00:25:03.467 回答