介绍同步加载、异步加载、延迟加载

同步加载 同步模式又称阻塞模式,会阻止浏览器的后续处理,中止了后续的文件的解析,执行,如图像的渲染。流览器之因此会采用同步模式,是由于加载的js文件中有对dom的操做,重定向,输出document等默认行为,因此同步才是最安全的。一般会把要加载的js放到body结束标签以前,使得js可在页面最后加载,尽可能减小阻塞页面的渲染。这样能够先让页面显示出来javascript

简单的说css

js在网页中加载会阻塞到未加载的css,html的加载跟渲染html

•异步加载也叫非阻塞模式加载,浏览器在下载js的同时,同时还会执行后续的页面处理。java

在script标签内,用js建立一个script元素并插入到document中,这种就是异步加载js文件了。浏览器

•同步加载流程是瀑布模型,异步加载流程是并发模型。安全

简单的说并发

•异步加载不会阻塞未加载的css、html的加载,dom

延迟加载(lazy loading)异步

 

延迟加载:有些 js 代码并非页面初始化的时候就马上须要的,而稍后的某些状况才须要的。延迟加载就是一开始并不加载这些暂时不用的js,而是在须要的时候或稍后再经过js 的控制来异步加载。async

简单的说

•用的时候再执行,不用不执行

分享下封装好的代码

function loadScript() { var script = document.createElement("script"); script.type = "text/javascript"; //<script style = “text/javascript”>
   script.src = url; //<script style = “text/javascript” url = “”>
   if(script.readyState) {} // readyState载入中
   (function() { function async_load() { var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = 'http://yourdomain.com/script.js'; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); // parentNode返回元素的父节点
 // insertBefore在当前子节点的旁边插入节点
 } if(window.attachEvent) //attachEvent将代码层跟ul层相分离
  window.attachEvent('onload', async_load); else window.addEventListener('load', async_load, false); })(); 
相关文章
相关标签/搜索