使Javascript无阻塞

使Javascript无阻塞,javascript,nonblocking,Javascript,Nonblocking,在以非阻塞方式呈现Javascript时,有哪些不同的方法(效率方面的比较)?。我听说了可以与script标记一起使用的defer属性。还有其他类似的方法吗?如果有,它们比延迟有什么优势 我听说了可以与script标记一起使用的defer属性 是,使脚本(可能)在初始解析/呈现期间不同步运行 还有其他这样的方法吗 是的,如果您在JavaScript中创建一个script元素并将其附加到DOM中,这也不会阻碍页面的解析/呈现。例如: <script> (function() {

在以非阻塞方式呈现Javascript时,有哪些不同的方法(效率方面的比较)?。我听说了可以与script标记一起使用的defer属性。还有其他类似的方法吗?如果有,它们比延迟有什么优势

我听说了可以与script标记一起使用的defer属性

是,使脚本(可能)在初始解析/呈现期间不同步运行

还有其他这样的方法吗

是的,如果您在JavaScript中创建一个
script
元素并将其附加到DOM中,这也不会阻碍页面的解析/呈现。例如:

<script>
(function() {
    var script = document.createElement('script');
    script.src = "/path/to/your/async/script.js";
    document.getElementsByTagName('script')[0].parentNode.appendChild(script);
})();
</script>

(功能(){
var script=document.createElement('script');
script.src=“/path/to/your/async/script.js”;
document.getElementsByTagName('script')[0].parentNode.appendChild(script);
})();
…如果有,那么他们比延迟有什么优势

defer
async
以及一些浏览器。特别是,IE<9可能会无序地执行
defer
'd脚本,而
defer
'd脚本意味着要按顺序处理(只是在页面解析/呈现过程中没有)。如果您自己添加
脚本
元素,您可以挂起它们的
加载
事件,然后加载下一个脚本(或者使用像RequireJS这样的东西,它可以为您完成这一任务,甚至更多)。除此之外,不多