通过为script标签添加defer
和async
属性也可以实现异步加载js文件。
<script data-main="js/main.js" src="js/require.js" defer></script>
defer:
设置了defer属性的js文件会通过异步方式加载,不会阻塞页面渲染。
设置了defer属性的js文件会在页面渲染完毕后,DOMContentLoaded事件调用前执行,即使script标签不在body底部。
如果有多个设置了defer的script标签,则执行时会按照顺序依次执行这些js文件。
<script data-main="js/main.js" src="js/require.js" async ></script>
async:
设置了async的script脚本会以异步方式加载,不会阻塞页面渲染。
设置了async的script脚本加载完成后即会执行脚本,执行过程会阻塞页面渲染。
设置了async的script脚本不会按照页面中script标签的顺序来执行,而是按照加载完成的顺序执行。