如何加载第三方js

来源:互联网 发布:世纪游轮更名巨人网络 编辑:程序博客网 时间:2024/05/22 09:47

  网页中加载JS文件是一个老问题了,已经被讨论了一遍又一遍,这里不会再赘述各种经典的解决方案。JS文件可以通过来源来分为两个纬度:第一方JS和第三方JS。第一方JS是网页开发者自己使用的JS代码(内容开发者可控)。而第三方JS则是其他服务提供商提供的(内容开发者不可控),他们将自己的服务包装成JS SDK供网页开发者使用。这篇文章关注的第三方JS文件的加载。

  从网站开发者的角度来看,第三方JS相比第一方JS有如下几个不同之处:

  下载速度不可控

  JS地址域名与网站域名不同

  文件内容不可控

  不一定有强缓存(Cache-Control/Expires)

  如果你的网站上面有很多第三方JS代码,那么“下载速度的不可控”很有可能导

  致你的网站会被拖慢。因为JS在执行的时候会影响到页面的DOM和样式等情况。浏览器在解析渲染HTML的时候,如果解析到需要下载文件的标签,那么会停止解析接下来的HTML,然后下载外链JS文件并执行。等JS执行完毕之后才会继续解析剩下的HTML。这就是所谓的『HTML解析被阻止』。浏览器解析渲染页面的抽象流程图如下:

  第三方JS代码并不受网站开发者的控制,很有可能会出现加载时间长甚至加载失败的情况。这时候就会导致整个页面的加载速度变慢。第三方JS代码越多这种风险越大。按照互联网守则:

  网站加载速度越慢,用户流失越多

  所以要考虑下如何在有很多第三方JS的情况下,保证他们不影响到网站自己的加载速度。我们可以异步加载这些第三方JS代码。

  异步加载

  异步加载JS的方法很多,最常见的就是动态创建一个标签,然后设置其src和async属性,再插入到页面中。这里有个DEMO。实际操作的代码如下:

  <>推荐阅读:北京最大的整形医院http://www.dydts.com/

  function load(url) {

  var scrs = document.getElementsByTagName('');

  var last = scrs[scrs.length - 1];

  var scr = document.('');

  scr.src = url;

  scr.async = true;

  last.parentNode.insertBefore(scr, last);

  }

  load('test.js');

原创粉丝点击