当前位置: 首页 > news >正文

js延迟加载的方式有哪些?

延迟加载(Deferred Loading)是一种优化网页性能的技术,可以延迟加载页面中的资源(如脚本、样式表、图片等),从而加快页面的初始加载速度。

以下是几种常见的 JavaScript 延迟加载的方式:

1. defer 属性:将脚本标签的 defer 属性设置为 "defer",使得脚本在页面完成解析时执行。例如:<script src="script.js" defer></script>

2. 动态创建 script DOM:通过 JavaScript 动态创建 <script> 元素,并将其插入到页面中。这样可以控制脚本的加载时机,例如在页面加载完毕后再加载脚本

var script = document.createElement('script');
script.src = 'script.js';
document.body.appendChild(script);

3. XmlHttpRequest 脚本注入:使用 XMLHttpRequest 对象加载 JavaScript 脚本,并将其注入到页面中。这种方式可以在页面加载过程中异步加载脚本。示例代码如下:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'script.js', true);
xhr.onload = function() {if (xhr.status === 200) {var script = document.createElement('script');script.textContent = xhr.responseText;document.body.appendChild(script);}
};
xhr.send();

4. 延迟加载工具:使用第三方的延迟加载工具库,如 LazyLoad,可以更方便地管理和控制页面中的延迟加载资源。这些工具通常提供了更多的功能和配置选项,例如按需加载、懒加载、预加载等。

这些延迟加载的方式可以根据具体的需求和场景选择合适的方式来优化页面加载性能,提升用户体验。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 告别懵逼——前端项目调试与问题排查方法小结
  • wsl下将Ubuntu从c盘移动到其他盘
  • 构建高效智慧水务平台的关键要素有哪些?
  • 解释 JVM 的内存模型(堆、栈、方法区等),并简述如何通过调整 JVM 参数来优化应用程序的性能?
  • 视频:Python深度学习量化交易策略、股价预测:LSTM、GRU深度门控循环神经网络|附代码数据...
  • 零工经济下的外卖骑手:多样性与困境的交织
  • iscntrl函数讲解 <ctype.h>头文件函数
  • 人工智能与机器学习原理精解【15】
  • 基于tesseract实现文档OCR识别
  • 函数重载的奥秘
  • link .css加载失败事件
  • 乐凡三防平板高性能为稳定运行保驾护航
  • 如何应对日益复杂的网络攻击?Edge SCDN(边缘安全加速)的应用场景探讨
  • Java算法之梳排序(Comb Sort)
  • 【nodejs】windows切換nodejs版本集成webstorm
  • [译]Python中的类属性与实例属性的区别
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • eclipse的离线汉化
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • HashMap剖析之内部结构
  • js ES6 求数组的交集,并集,还有差集
  • k8s如何管理Pod
  • leetcode98. Validate Binary Search Tree
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Magento 1.x 中文订单打印乱码
  • Material Design
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • mysql常用命令汇总
  • nginx 配置多 域名 + 多 https
  • Node 版本管理
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • storm drpc实例
  • 闭包--闭包作用之保存(一)
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 今年的LC3大会没了?
  • 巧用 TypeScript (一)
  • 如何实现 font-size 的响应式
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • python最赚钱的4个方向,你最心动的是哪个?
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​ArcGIS Pro 如何批量删除字段
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # include “ “ 和 # include < >两者的区别
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (day18) leetcode 204.计数质数
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (备份) esp32 GPIO
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)大型网站架构演变和知识体系