JavaScript 脚本延迟加载方式
实现 JavaScript 延迟加载的 5 种方法
问题
如何延迟加载 JavaScript 脚本以提高页面加载速度?
解答
延迟加载是指等页面加载完成后再加载 JavaScript 文件,可以避免阻塞页面渲染,提升用户体验。
1. defer 属性
脚本与文档同步解析,但在文档解析完成后才执行。多个 defer 脚本按顺序执行(但部分浏览器可能不遵守)。
<script src="script.js" defer></script>
2. async 属性
脚本异步加载,加载完成后立即执行。多个 async 脚本的执行顺序不可预测。
<script src="script.js" async></script>
3. 动态创建 DOM
监听文档加载事件,加载完成后动态创建 script 标签。
window.addEventListener('load', function() {
const script = document.createElement('script');
script.src = 'script.js';
document.body.appendChild(script);
});
4. setTimeout 延迟
使用定时器延迟加载脚本。
setTimeout(function() {
const script = document.createElement('script');
script.src = 'script.js';
document.body.appendChild(script);
}, 1000);
5. 脚本放在底部
将 script 标签放在 body 底部,让脚本最后加载执行。
<body>
<!-- 页面内容 -->
<script src="script.js"></script>
</body>
关键点
- defer 和 async 都不阻塞文档解析,但 defer 在文档解析完成后执行,async 在加载完成后立即执行
- defer 脚本按顺序执行,async 脚本执行顺序不可预测
- 动态创建 DOM 方式最灵活,可以精确控制加载时机
- 脚本放在底部是最简单的优化方式,但仍会阻塞页面渲染
目录