【JavaScript 基础】-- JS 加载引入方式(defer、async、prefetch、preload)
发布日期:2021-05-10 02:09:30 浏览次数:17 分类:精选文章

本文共 887 字,大约阅读时间需要 2 分钟。

JavaScript 脚本加载优化

JavaScript 是一个单线程语言,渲染引擎和 JavaScript 引擎并非同时工作。因此,当页面加载时,大量的 JS 代码如果被提前加载可能会导致页面刷新时出现短暂的闪屏现象。为了解决这一问题,开发者通过在 DOM 结构中添加 JavaScript 文件,利用 script 标签的 deferasync 特性进行优化。

defer 与 async 的区别

  • defer:script 标签带有 defer 属性时,浏览器会立即下载对应的 JS 文件,但等待当前页面的 DOM 渲染完毕之后再执行。这样可以确保页面内容的完整显示不会因为脚本加载而受到阻塞。多个带有 defer 的脚本会按照页面中出现的顺序依次执行其代码。
  • async: 带有 async 属性的 script 标签与 defer 不同,会在页面开始渲染时立即下载 JS 文件。下载完成后,脚本会立即执行,可能会影响页面的初始渲染。因此,建议在使用 async 时避免在脚本中操作 DOM,否则可能导致页面视觉上的干扰或模糊。

preload 和 prefetch 的作用

  • preload: 通过在 link 标签中使用 preload 属性,可以告知浏览器需要加载的资源文件。这些资源会被浏览器优先下载,但下载完成后不会立即执行任何逻辑代码,必须手动调用相应的函数或方法来实现功能。
  • prefetch:preload 有所不同的是,带有 prefetch 属性的资源会被浏览器在空闲时间下载,并作为未来导航所需的资源缓存。这种方式通常用于提升用户体验,特别是在网页内容较多的情况下,可以预先加载一些可能需要的文件以减少下一次访问的加载时长。

这些技术手段的共同目标都是为了最大限度地提升页面加载速度,同时减少页面刷新时的视觉闪屏现象。通过合理配置 script 标签的 deferasync 属性,以及在需要的场景下使用 preloadprefetch,可以有效避免 JS 加载对页面渲染的阻塞问题,从而实现更流畅、更高效的用户体验。

上一篇:HTTP与HTTPS记录
下一篇:简单实现Jsonp封装

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月17日 20时39分48秒