延迟加载JS的方式

JavaScript 延迟加载就是等DOM(页面)加载完成之后再加载js文件,这样有助于提高页面加载速度,用户体验更好

 

常用延迟加载js方式有: 

  • 将JS放在页面底部,html页面内容从上到下按顺序加载。
  • window.onload()=function(){},window全局函数
  • 使用setTimeout,增加延时处理,异常线程,延时时间要自己预估。
  • HTML4新增的script标签属性:defer, 基本等同于在window.onload时执行
  • HTML5新增的script标签属性:async, 在DOM完成加载之后,window.onload之前执行

 常用defer , async。

示例:

script.js

console.log(  document.getElementById('box')   );

 index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>延迟加载JS</title>
    <script type="text/javascript" src='script.js'></script>
</head>
<body>
<div id='box'>我一只小小盒子:box</div>
</body>
</html>

效果:如下,在不加defer 或者 async放在页面顶部是获取不到这个div元素的,因为页面还没有加载出来。 

 调用的地方加上defer

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>延迟加载JS</title>
    <script defer type="text/javascript" src='script.js'></script>
</head>
<body>
<div id='box'>我一只小小盒子:box</div>
</body>
</html>

async 

同样的我们把在header的引入,上面的defer换成async,如下: 

  <title>延迟加载JS</title>
  <script async type="text/javascript" src='script.js'></script>

执行效果同上面defer一样,是拿到DOM元素:div的。

defer async区别 

示例:

a1.js

console.log('执行a1.js')

b2.js 

console.log('执行b2.js')

c3.js 

console.log('执行c3.js')

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>延迟加载JS</title>
</head>
<body>
<div id='box'>我一只小小盒子:box</div>
<script defer src="a1.js"></script>
<script defer src="b2.js"></script>
<script defer src="c3.js"></script>
</body>
</html>

使用async

<script async src="a1.js"></script>
<script async src="b2.js"></script>
<script async src="c3.js"></script>

 上面放在底部下的调用3个js,使用async, defer执行效果都是一样如图:

延迟加载3个脚本,如果使用的是defer,加载脚本的时候,一定会是按照以下顺序执行:

  1. a1.js
  2. b2.js
  3. c3.js

使用async,也是延迟加载js脚本,但是这3个脚本执行顺序是不确定的,先完成加载先执行,如果这3个脚本有依赖关系,使用是async是不合适的。

如果无法判断用defer,async,优先使用 defer.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
settimeout是JavaScript中的一个方法,可以用来延迟执行一段代码。在使用setTimeout延迟加载JS时,可以通过设定延迟的时间来控制什么时候执行这段代码。 延迟加载JS有以下几个优点: 1. 提高网页加载性能:通过将一些不必要的JS代码延迟加载,可以减少网页的加载时间,提高用户的访问速度和体验。 2. 减少页面阻塞:JS代码的加载和执行会阻塞页面的渲染,如果直接将所有的JS代码都放在页面头部加载,会导致用户在页面加载过程中看到空白的页面。通过延迟加载JS,可以让页面在加载的同时渲染出页面内容,提高用户的体验。 3. 对于某些插件和第三方库,可以根据需要进行延迟加载,只在需要的时候加载相应的代码,减少页面的负载。 使用settimeout延迟加载JS的方法如下: 1. 在需要延迟加载的位置,使用setTimeout方法包装一段JS代码,设置延迟的时间。 2. 在延迟时间到达后,setTimeout会执行包装的代码。 例如,可以使用如下代码延迟加载一个JS文件: setTimeout(function(){ var script = document.createElement('script'); script.src = 'example.js'; document.head.appendChild(script); }, 2000); 上述代码会在页面加载后延迟2秒钟后加载example.js文件。 需要注意的是,在使用settimeout延迟加载JS时,延迟的时间应该根据实际情况进行调整,避免加载太早或者加载太晚导致的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值