欢迎来到代码驿站!

JavaScript代码

当前位置:首页 > 网页前端 > JavaScript代码

Javascript无阻塞加载具体方式

时间:2021-05-03 10:03:48|栏目:JavaScript代码|点击:

看了《高性能JavaScript》的读书笔记

几个原则:

1、将脚本放在底部

<link>还是在head中,用以保证在js加载前,能加载出正常显示的页面。

<script>放在</body>前。

2、成组脚本

由于每个<script>标签下载时阻塞页面解析过程,所以限制页面的<script>总数也可以改善性能。适用于内联脚本和外部脚本。

3、非阻塞脚本

等页面完成加载后,再加载js代码。也就是,在window.load事件发出后开始下载代码。

(1)defer属性:支持IE4和fierfox3.5更高版本浏览器

<script defer>...</script>

内联和外部文件

带defer属性的<script>可出现在文档的任何位置,对应的js文件将在<script>被解析时启动下载,但代码不会执行,直到DOM加载完毕(在onload事件句柄被调用之前)。所以实现了和也卖弄其他资源一起并行下载。

(2)动态脚本元素

文档对象模型(DOM)允许你使用js动态创建HTML的几乎全部文档内容。

复制代码 代码如下:

var script=document.createElement("script");

script.type="text/javascript";

script.src="file.js";

document.getElementByTagName_r("head")[0].appendChild(script);


此技术的重点在于:无论在何处启动下载,文件额下载和运行都不会阻塞其他页面处理过程。即使在head里(除了用于下载文件的http链接)。

(3)The YUI3 approach

理念:用一个很小的初始代码,下载其余的功能代码,先引入文件:

复制代码 代码如下:

<script type="text/javascript src=//img.jbzj.com/file_images/article/201306/yuanma/combo.js></script>

此种子文件大约10KB,

使用:

复制代码 代码如下:

YUI().use("dom",function(Y){

  Y.Dom.addclass(...)

})


当所有代码可用时,回调函数被调用,YUI实例作为参数传入,就可以立即使用新下载的功能。

The LazyLoad library

使用:先引入:lazyload-min.js

(4)

复制代码 代码如下:

LazyLoad.js("a.js",function(){

Appliction.init();

})


多个文件:
复制代码 代码如下:

LazyLoad.js(["a.js","b.js"],function(){

Application.init();

})


(5)The LABjs library

先引入:lab.js

复制代码 代码如下:

$LAB.script("a.js").wait(function(){

Application.init();

})


多个文件,就链式写法

他的独特之处在于能够管理依赖关系。

可以通过wait()函数指定哪些文件应该等待其他文件。

例如:b.js的代码保证不在a.js之前运行

复制代码 代码如下:

$LAB.script("a.js").wait().script("b.js").wait(function(){

Application.init();

})


这样,虽然两个文件是并行下载的,却能保证a.js能在b.js之前执行

上一篇:解决css和js的{}与smarty定界符冲突问题的两种方法

栏    目:JavaScript代码

下一篇:页面回到顶部的三种实现(锚标记,js)

本文标题:Javascript无阻塞加载具体方式

本文地址:http://www.codeinn.net/misctech/114124.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有