20

我正在评估脚本加载优化的现有资源,但我在一些类似的文章中读到指的是旧版浏览器会阻止其他下载,直到这个顺序脚本加载阶段完成。我检查 Modernizr(yepnope.js)、headjs 和 ControlJs 作为候选人。但是,是否有必要使用这个工具在现代浏览器中进行并行脚本加载?

4

2 回答 2

21

我相信默认情况下,当今大多数浏览器实际上会并行加载脚本。但默认情况下浏览器不会并行执行脚本。例如,在以下代码中,脚本将并行加载。在图像中我们可以看到 Fast1.js 和 Fast2.js 加载速度非常快,但是根据浏览器控制台中的时间,Fast2.js 在 Fast1.js 执行后 3 秒执行。

另外,要记住的其他一点是文件的顺序可能会有所不同。Backbone.js 文件依赖于 underscore.js 文件。如果我们更改这些文件的顺序,其中 bacbone.js 在 underscore.js 之前,则会引发错误。

<html >
<head>
    <title></title>
    <script src="scripts/fast1.js" type="text/javascript"></script>
    <script src="scripts/libs/jquery-1.8.3.js" type="text/javascript"></script>
    <script src="scripts/libs/underscore.js" type="text/javascript"></script>
    <script src="scripts/libs/backbone.js" type="text/javascript"></script>
    <script src="scripts/fast2.js" type="text/javascript"></script>
</head>
<body>
    Hello
    <script type="text/javascript">
        console.log("html:   " + Date());
    </script>
    <img src="imgs/bImg.png" />
</body>
</html>

这是 JavaScript 文件 Fast1.js 和 Fast2.js 的代码

console.log("Fast 1: " + Date())

在浏览器中加载脚本文件

对于脚本加载,我使用 Require.js。它还提供了将代码组织成单独文件中的模块的好处。

这是我在浏览器脚本加载上创建的博客文章:浏览器脚本加载

这里有几篇关于脚本加载的文章:

于 2012-12-30T20:44:00.700 回答
2

大多数浏览器按顺序加载它们。但是,async您可以将属性放在script标签上以使其加载不同。

scriptMDN很好地解释了标签的作用。

https://developer.mozilla.org/en-US/docs/HTML/Element/Script

于 2012-08-25T13:27:48.230 回答