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三个是顺序下载的。这样就保证了它们之间的依赖关系不会打乱。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端