当前位置:首页 > JavaScript

defer js 实现

2026-01-31 23:33:34JavaScript

defer 属性实现 JavaScript 延迟加载

在 HTML 中,defer 属性用于告知浏览器该脚本应在文档解析完成后、DOMContentLoaded 事件触发前执行。带有 defer 的脚本会按它们在文档中出现的顺序执行。

<script src="script.js" defer></script>

async 属性实现异步加载

async 属性与 defer 类似,但脚本会在下载完成后立即执行,不保证执行顺序。适用于不依赖其他脚本的独立代码。

<script src="script.js" async></script>

动态创建 script 标签

通过 JavaScript 动态创建 script 元素并添加到 DOM 中,可以更灵活地控制脚本加载时机。

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

使用事件监听确保执行顺序

当需要确保多个动态加载的脚本按顺序执行时,可以使用 onload 事件来链式加载。

function loadScript(src, callback) {
    const script = document.createElement('script');
    script.src = src;
    script.onload = callback;
    document.head.appendChild(script);
}

loadScript('first.js', function() {
    loadScript('second.js');
});

Intersection Observer API 实现懒加载

对于需要延迟加载的非关键脚本,可以使用 Intersection Observer API 在元素进入视口时再加载。

const observer = new IntersectionObserver((entries) => {
    entries.forEach(entry => {
        if (entry.isIntersecting) {
            const script = document.createElement('script');
            script.src = 'lazy-script.js';
            document.body.appendChild(script);
            observer.unobserve(entry.target);
        }
    });
});

observer.observe(document.querySelector('#lazy-load-trigger'));

模块化动态导入

在支持 ES 模块的环境中,可以使用动态 import() 语法按需加载模块。

defer js 实现

button.addEventListener('click', async () => {
    const module = await import('./module.js');
    module.doSomething();
});

每种方法适用于不同场景,defer 适合维护执行顺序的文档级脚本,async 适合独立第三方脚本,动态加载适合按需功能,而模块化导入适合现代模块化应用。

标签: deferjs
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选框 co…