JavaScript|JS异步加载

简介: JavaScript|JS异步加载

1 问题描述

JS为什么需要异步加载?首先要了解到JS在默认情况下是以同步模式(阻塞模式)加载的,浏览器对于代码请求的资源都是瀑布式的加载,而不是阻塞式的,但是JS的执行总是阻塞的。而对于异步加载(非阻塞加载),浏览器在加载JS的同时,还会继续进行后续页面的处理。接下来,就来看看异步加载是怎么回事吧。


2 问题解决

1)动态生成script标签

<body>

    <p>这是文本</p>

    <script type="text/javascript">

    (function(){

       var s=document.createElement("script");

       s.type="text/javascript";

       s.src="http://china-addthis.googlecode.com/svn/trunk/addthis.js";

       document.body.appendChild(s);

    })();

    </script>

    <script type="text/javascript" src='http://libs.baidu.com/jquery/2.0.0/jquery.min.js'></script>

    <script type="text/javascript">

       alert("hello world");

    </script>

</body>

2async属性

async属性规定一旦脚本可用,则会异步执行(一旦下载完毕就会立刻执行)。其仅适用于外部脚本(在使用src属性时适用)。

<body>

    <p>这是文本</p>

    <script type="text/javascript"  src='http://china-addthis.googlecode.com/svn/trunk/addthis.js'  async="async"></script>

    <script type="text/javascript"  src='http://libs.baidu.com/jquery/2.0.0/jquery.min.js'></script>

    <script type="text/javascript">

       alert("hello world");

    </script>

</body>

3defer属性

defer属性规定是否对脚本执行进行延迟,直到页面加载为止。

<body>

    <p>这是文本</p>

    <script type="text/javascript"  src='http://china-addthis.googlecode.com/svn/trunk/addthis.js'  defer="defer"></script>

    <script type="text/javascript" src='http://libs.baidu.com/jquery/2.0.0/jquery.min.js'></script>

    <script type="text/javascript">

       alert("hello world");

    </script>

</body>


3 其他方法

XHR注入(通过XMLHttpRequest对象来获取JS,然后创建一个script元素插入到DOM结构中);ajaxeval(使用ajax得到脚本内容,然后通过evalxmlhttp.responseText)来运行脚本)iframe等。

目录
相关文章
|
15天前
|
监控 JavaScript 前端开发
确定使用 `defer` 属性还是 `async` 属性来异步加载 JavaScript
【10月更文挑战第24天】选择使用 `defer` 属性还是 `async` 属性来异步加载 JavaScript 是一个需要综合考虑多个因素的决策。需要根据脚本之间的依赖关系、页面加载性能要求、脚本的功能和重要性等因素来进行权衡。在实际应用中,需要通过测试和验证来确定最适合的加载方式,以提供更好的用户体验和页面性能。
|
15天前
|
JavaScript 前端开发 Go
异步加载 JS 的方法
【10月更文挑战第24天】异步加载 JavaScript 是提高网页性能和用户体验的重要手段。通过使用不同的方法和技术,可以实现灵活、高效的异步加载 JavaScript。在实际应用中,需要根据具体情况选择合适的方法,并注意处理可能出现的问题,以确保网页能够正常加载和执行。
|
15天前
|
监控 JavaScript 前端开发
使用 `defer` 属性异步加载 JavaScript
【10月更文挑战第24天】使用 `defer` 属性异步加载 JavaScript 是一种有效的提高页面性能和用户体验的方法。通过合理设置 `defer` 属性,可以在不影响页面渲染的情况下异步加载脚本,并确保脚本的执行顺序。在实际应用中,需要根据具体情况选择合适的加载方式,并注意处理可能出现的问题,以确保页面能够正常加载和执行。
|
1月前
|
人工智能 JavaScript 前端开发
使用Node.js模拟执行JavaScript
使用Node.js模拟执行JavaScript
|
1月前
|
消息中间件 JavaScript 前端开发
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
42 1
|
1月前
|
JavaScript 前端开发
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
97 1
|
29天前
|
Web App开发 JavaScript 前端开发
Node.js:JavaScript世界的全能工具
Node.js:JavaScript世界的全能工具
|
29天前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
16 0
|
1月前
|
移动开发 JavaScript 前端开发
【JavaScript】JS执行机制--同步与异步
【JavaScript】JS执行机制--同步与异步
19 0
|
1月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)