
【JavaScript 基础】-- JS 加载引入方式(defer、async、prefetch、preload)
发布日期:2021-05-10 02:09:30
浏览次数:17
分类:精选文章
本文共 887 字,大约阅读时间需要 2 分钟。
JavaScript 脚本加载优化
JavaScript 是一个单线程语言,渲染引擎和 JavaScript 引擎并非同时工作。因此,当页面加载时,大量的 JS 代码如果被提前加载可能会导致页面刷新时出现短暂的闪屏现象。为了解决这一问题,开发者通过在 DOM 结构中添加 JavaScript 文件,利用 script
标签的 defer
和 async
特性进行优化。
defer 与 async 的区别
- defer: 当
script
标签带有defer
属性时,浏览器会立即下载对应的 JS 文件,但等待当前页面的 DOM 渲染完毕之后再执行。这样可以确保页面内容的完整显示不会因为脚本加载而受到阻塞。多个带有defer
的脚本会按照页面中出现的顺序依次执行其代码。 - async: 带有
async
属性的script
标签与defer
不同,会在页面开始渲染时立即下载 JS 文件。下载完成后,脚本会立即执行,可能会影响页面的初始渲染。因此,建议在使用async
时避免在脚本中操作 DOM,否则可能导致页面视觉上的干扰或模糊。
preload 和 prefetch 的作用
- preload: 通过在
link
标签中使用preload
属性,可以告知浏览器需要加载的资源文件。这些资源会被浏览器优先下载,但下载完成后不会立即执行任何逻辑代码,必须手动调用相应的函数或方法来实现功能。 - prefetch: 与
preload
有所不同的是,带有prefetch
属性的资源会被浏览器在空闲时间下载,并作为未来导航所需的资源缓存。这种方式通常用于提升用户体验,特别是在网页内容较多的情况下,可以预先加载一些可能需要的文件以减少下一次访问的加载时长。
这些技术手段的共同目标都是为了最大限度地提升页面加载速度,同时减少页面刷新时的视觉闪屏现象。通过合理配置 script
标签的 defer
和 async
属性,以及在需要的场景下使用 preload
和 prefetch
,可以有效避免 JS 加载对页面渲染的阻塞问题,从而实现更流畅、更高效的用户体验。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月17日 20时39分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
使用maven
2019-03-21
依赖范围scope
2019-03-21
apache服务器 vs Tomcat服务器
2019-03-21
springboot:集成 Jsp
2019-03-21
Python:简介
2019-03-21
python:input
2019-03-21
python:字符串
2019-03-21
cobaltstrike生成一个原生c,然后利用xor加密解密执行
2019-03-21
HTML中如何给HTML元素添加事件
2019-03-21
IDEA springMVC不报错出现访问404问题
2019-03-21
Redis概述和基础
2019-03-21
SSH整合的404错误
2019-03-21
wpf 使用Font Awesome
2019-03-21
阿里云Windows服务器+PHPStudy+apache 如何部署SSL证书
2019-03-21
Windows10:远程桌面连接报错“出现身份验证错误。要求的函数不受支持”
2019-03-21
C++ 错误:“xxx” does not name a type
2019-03-21
redis的发布和订阅
2019-03-21
lettcode 221. 最大正方形
2019-03-21
112. 路径总和(Javascript)
2019-03-21
G1 如何做到可预测的停顿和G1 垃圾收集器入门
2019-03-21