JS Queue LazyLoad 之一

前面三篇实现了多个JS并行加载,即各个JS文件相互不依赖。实现时仅顺序将其插入到head中。直至全部插入完毕才进行回调。并行下载的好处是效率较高。

但有时我们需要加载的JS模块之间存在相互依赖关系。如a,b,c三个JS文件。b.js中代码依赖于a中定义的某些函数或类,c.js又依赖b.js中的函数或类,而c中具有一个入口函数。这时得保证a,b,c顺序加载,否则如果c早于b或a先加载完,则可能会出现xx未定义之类的错误提示。顺序加载的缺点就是效率较低,因为必须一个个的下载。

 

Queue LazyLoad 0.1版接口非常之简单,如下传个数组url即可

1
2
3
4
5
6
QueueLazyLoad.js([
       {
           url  // JS路径
       }
       ...
]);

 

看一个最简单的顺序加载示例,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <title>QueueLazyLoad_0.1.js</title>
        <script src="https://files.cnblogs.com/snandy/QueueLazyLoad_0.1.js"></script>
        <script type="text/javascript">
            var libs = [
                {url:'https://files.cnblogs.com/snandy/a.js'},
                {url:'https://files.cnblogs.com/snandy/b.js'},
                {url:'https://files.cnblogs.com/snandy/c.js'}
            ];
            function start(){
                QueueLazyLoad.js(libs);
            }
        </script>
    </head>
    <body>
        <button onclick="start()">Queue LazyLoad</button>
    </body>
</html>

 

先引入了QueueLazyLoad_0.1.js,点击按钮后调用QueueLazyLoad.js方法。各个浏览器加载图如下

Firefox

Chrome

IE9

 

从各浏览器下载时间线可看到,时间线无重合部分。即a,b,c三个是顺序下载的。这样就保证了它们之间的依赖关系不会打乱。

posted on   snandy  阅读(3108)  评论(18编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
< 2011年5月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4
5 6 7 8 9 10 11

统计

点击右上角即可分享
微信分享提示