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即可
QueueLazyLoad.js([
{
url // JS路径
}
...
]);
看一个最简单的顺序加载示例,
<!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三个是顺序下载的。这样就保证了它们之间的依赖关系不会打乱。
浙公网安备 33010602011771号