Bootstrap-4脚本的最佳位置和脚本的标签

时间:2019-05-13 02:51:21

标签: bootstrap-4 deferred-loading

一个老话题很多讨论... 我读了很多,但仍不确定...

找到Bootstrap-4 JS脚本以获得最佳性能的最佳位置和最佳脚本标签(延迟/异步)是什么?

在Bootstrap文档中:“将以下s放在页面结尾附近,就在紧闭标记

之前

</body>

他们不使用任何脚本标签(延迟/异步)

我了解了脚本标签, 一些人写道,在正文关闭标签之前定位脚本就像在“ defer”标签上定位标题一样。 (旧版浏览器除外) 有人说“如果脚本仍在末尾,性能会更好,因为稍后会下载它们”。

以下是最佳做法吗?

在主体关闭标签之前找到jquery / popper / bootstrap,首先jquery并使用defer到popper.min.js和bootstrap.min.js?

<body>
......
<script  src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script defer src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" ></script>
</body>

或者只是在没有“ defer”标记的引导文档中进行操作?

2 个答案:

答案 0 :(得分:1)

最后输入是最佳实践,您甚至可以在正文关闭后编写脚本:html从顶部加载到按钮,当浏览器到达脚本元素时,它下载(并等待)源,因此,如果将其放在末尾,则会加载该页面,然后下载js。请记住,需要使用js才能使视图动态化,因此在页面加载之前,您不需要像以下功能:单击dropdwon并查看其内容。延迟/异步只是获得相同结果的一种方法,但是并不完全相同。

答案 1 :(得分:0)

头部用于外部资源

最好的做法是在文档开头排除所有依赖项。 <head> 正是为此而生。由于在页面加载的那一刻没有加载 DOM,这将使在那里对 DOM 的所有引用失败。曾经有一段(黑暗)时间,在 defer 之前,通常会得到建议将脚本包含放在 </body> 之后但在 </html> 之前。

但是如果脚本资源确实加载在header中,有一些更好的解决方案来处理这个:

事件处理程序

一个技巧是等待 DOM 加载 DOMContentloaded event handler。一旦 DOM 加载并准备好,该事件就会触发。这可以与 async 结合使用以加快页面加载的感知速度。

推迟

很长一段时间以来,可以将 JavaScript 的执行推迟到页面加载之后。 defer 上的属性 script src= 将按引用顺序对 JavaScript 进行排队。

异步

属性 async 不一定会在页面加载后执行脚本,它只是建议浏览器不要等待 JavaScript(块)的下载和执行,而是与页面渲染并行执行。加载顺序无法保证。

这适用于不直接依赖于页面内容或其他资源的 JavaScript 业务逻辑。 (https://javascript.info/script-async-defer)。包括 bootstrap.min.jsasync 很可能无法产生预期的结果。

WordPress

目前,但这很可能会改变,没有诡计,WordPress 不会推迟 JavaScript。你可以依靠插件来做到这一点,或者add a simple function到你的functions.php

内联 JavaScript

如果 JavaScript 不是从 src 文件中读取而是直接包含的 deferasync 将被忽略。如果内联 JavaScript 需要等待 DOM 加载,请使用事件侦听器或确实将 <script></script> 放在之后但之前(如果代码在 <html> 之后,大多数浏览器都可以。html5 {{1 }}-tag 实际上是可选的)

引导程序

回答你的问题:我不清楚为什么 Bootstrap 不使用或记录 defer 用于他们的脚本。最后,他们甚至摆脱了对 jQuery 的依赖,所以我看不出他们为什么仍然document 那样做。