在以非阻塞方式呈现Javascript时,有哪些不同的方法(在效率方面进行比较)?我听说过可以与script标签一起使用的defer属性。还有其他这样的方法,如果有什么比推迟有什么优势呢?
答案 0 :(得分:5)
我听说过可以与脚本标记一起使用的defer属性。
是的,defer
and async
使脚本(可能)在初始解析/渲染期间不会同步运行。
还有其他此类方法......
是的,如果您在JavaScript中创建script
元素并将其附加到DOM,则不会阻止页面解析/呈现。 E.g:
<script>
(function() {
var script = document.createElement('script');
script.src = "/path/to/your/async/script.js";
document.getElementsByTagName('script')[0].parentNode.appendChild(script);
})();
</script>
......如果有什么比推迟更有优势呢?
defer
和async
aren't universally supported以及一些浏览器have some quirks around them。特别是,IE&lt; 9可以不按顺序执行defer
'脚本,而defer
'脚本意味着按顺序处理(只是在页面的解析/呈现期间)。如果你自己添加script
元素,你可以挂钩他们的load
事件,然后加载下一个脚本(或使用像RequireJS这样的东西 - 以及更多 - 为你)。除此之外,并不多。