前端:js延长加载的方式有哪些_异步加载js的方式有哪些

前端:js延长加载的方式有哪些_异步加载js的方式有哪些什么是JS延迟加载?JS延迟加载,也就是等页面加载完成之后再加载JavaScript文件为什么让JS实现延迟加载?js的延迟加载有助于提高页面的

什么是JS延迟加载?

JS延迟加载,也就是等页面加载完成之后再加载JavaScript文件

为什么让JS实现延迟加载?

js的延迟加载有助于提高页面的加载速度。

Js延迟加载的方式有哪些?一般有以下几种方式:

·defer属性

·async属性

·动态创建DOM方式

·使用jQuery的getScript方法

·使用setTimeout延迟方法

·让JS最后加载

1、defer属性

HTML 4.01为<script>标签定义了defer属性。标签定义了defer属性元素中设置defer属性,等于告诉浏览器立即下载,但延迟执行标签定义了defer属性。

用途:表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕之后再执行在<script>元素中设置defer属性,等于告诉浏览器立即下载,但延迟执行

<!DOCTYPE html>
<html>
<head>
	<script src="test1.js" defer="defer"></script>
	<script src="test2.js" defer="defer"></script>
</head>
<body>
<!--这里放内容-->
</body>
</html>

说明:虽然<script>元素放在了<head>元素中,但包含的脚本将延迟浏览器遇到</html>标签后再执行HTML5规范要求脚本按照它们出现的先后顺序执行。在现实当中,延迟脚本并不一定会按照顺序执行defer属性只适用于外部脚本文件。支持HTML5的实现会忽略嵌入脚本设置的defer属性

2、async属性

HTML5 为<script>标签定义了async属性。与defer属性类似,都用于改变处理脚本的行为。同样,只适用于外部脚本文件。标签定义了async属性。与defer属性类似,都用于改变处理脚本的行为。同样,只适用于外部脚本文件。

目的:不让页面等待脚本下载和执行,从而异步加载页面其他内容。异步脚本一定会在页面 load 事件前执行。不能保证脚本会按顺序执行

<!DOCTYPE html>
<html>
	<head>
		<script src="test1.js" async></script>
		<script src="test2.js" async></script>
	</head>
<body>
<!--这里放内容-->
</body>
</html>

async和defer一样,都不会阻塞其他资源下载,所以不会影响页面的加载。

缺点:不能控制加载的顺序

3、动态创建DOM方式

//这些代码应被放置在</ body>标签前(接近HTML文件底部)
<script type="text/javascript">
	function downloadJSAtOnload() {
		varelement = document .createElement("script");
		element.src = "defer.js";
		document.body.appendChild(element);
	}
	if (window. addEventListener)
		window.addEventListener("load" ,downloadJSAtOnload, false);
	else if (window.attachEvent)
		window.attachEvent("onload", downloadJSAtOnload) ;
	else
		window. onload =downloadJSAtOnload;
</script>

4、使用jQuery的getScript()方法

$.getScript("outer.js" , function(){	//回调函数,成功获取文件后执行的函数
	console.log(“脚本加载完成")
});

5、使用setTimeout延迟方法的加载时间延迟加载js代码,给网页加载留出更多时间

<script type="text/javascript" >
	function A(){
		$.post("/1ord/1ogin" ,{name:username,pwd:password},function(){
			alert("Hello");
		});
	}
	$(function (){
		setTimeout('A()', 1000);	//延迟1秒
	})
</script>

6、让JS最后加载

把js外部引入的文件放到页面底部,来让js最后引入,从而加快页面加载速度例如引入外部js脚本文件时,如果放入html的head中,则页面加载前该js脚本就会被加载入页面,而放入body中,则会按照页面从上倒下的加载顺序来运行JavaScript的代码。所以我们可以把js外部引入的文件放到页面底部,来让js最后引入,从而加快页面加载速度。

上述方法2也会偶尔让你收到Google页面速度测试工具的“延迟加载javascript”警告。所以这里的解决方案将是来自Google帮助页面的推荐方案。

//这些代码应被放置在</body>标签前(接近HTML文件底部)

<script type= "text/javascript">
	function downloadJSAtonload() {
		var element = document.createElement("script");
		element.src = "defer.js";
		document.body.appendChild(element);
	}
	if (window.addEventListener)
		window.addEventListener("load", downloadJSAtOnload, false);
	else if (window.attachEvent )
		window.attachEvent("onload", downloadJSAtonload);
	else window.onload = downloadJSAtOnload;
</script>

这段代码意思等到整个文档加载完后,再加载外部文件“defer.js”。

使用此段代码的步骤:

6.1)复制上面代码

6.2)粘贴代码到HTML的标签前 (靠近HTML文件底部)

6.3)修改“defer.js”为你的外部JS文件名

6.4)确保文件路径是正确的。例如:如果你仅输入“defer.js”,那么“defer.js”文件一定与HTML文件在同一文件夹下。

注意:

这段代码直到文档加载完才会加载指定的外部js文件。因此,不应该把那些页面正常加载需要依赖的javascript代码放在这里。而应该将JavaScript代码分成两组。一组是因页面需要而立即加载的javascript代码,另外一组是在页面加载后进行操作的javascript代码(例如添加click事件。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11698.html

(0)

相关推荐

  • DBA入职指南学习笔记1「终于解决」

    DBA入职指南学习笔记1「终于解决」一、oracle安装学习 1、oracle认证方式 操作系统认证(本地登录)、用户名密码认证(远程登录) 2、oracle环境变量设置 PATH:sqlplus路径 ORACLE_HOME:orac…

    2023-03-26
    141
  • Flowable 表单「终于解决」

    Flowable 表单「终于解决」[TOC] 本文为稀土掘金技术社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究! 本专栏第五篇已发布,尚未看过的小伙伴请移步这里: 1. [ Flowable 开篇,流程引擎扫盲

    2023-08-02
    118
  • 利用python split()实现字符串拆分

    利用python split()实现字符串拆分Python中的split()方法是一种非常常用的字符串处理方法。它的主要作用是将一个字符串按照指定的分隔符进行拆分,返回一个由拆分后的子字符串组成的列表。这个方法广泛应用于数据清洗和字符串处理等场景。

    2023-12-05
    113
  • spss26怎么做相关性分析_相关性检验spss

    spss26怎么做相关性分析_相关性检验spssIBM SPSS Statistics为用户提供了三种相关性分析的方法,分别是双变量分析、偏相关分析和距离分析,三种相关分析方法各针对不同的数据情况,接下来我们将为大家介绍如何使用SPSS相关性分析…

    2023-04-12
    163
  • 提高数据处理效率的Python链表实现

    提高数据处理效率的Python链表实现在数据处理的过程中,链表是一种非常优秀的数据结构,特别是对于需要频繁进行插入和删除操作的场景,链表可以提供较高的效率和灵活性。Python作为一种高效而易用的编程语言,提供了多种数据结构的实现方式,其中链表也是可以用Python实现的。本文将介绍如何使用Python实现链表以及如何提高链表的性能。

    2024-02-17
    90
  • 总结:计算机原理

    总结:计算机原理文章浏览阅读4.3k次,点赞7次,收藏50次。一、计算机五大部件计算机由硬件和软件系统两大部分组成:1、硬件主要分为五个部分:1.控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调

    2023-11-08
    126
  • ElasticSearch 常见问题[通俗易懂]

    ElasticSearch 常见问题[通俗易懂]ElasticSearch 常见问题 丈夫有泪不轻弹,只因未到伤心处。 1、说说 es 的一些调优手段。 仅索引层面调优手段: 1.1、设计阶段调优 (1)根据业务增量需求,采取基于日期模板创建索引,

    2023-06-15
    164
  • mysql分库分表怎么实现_mysql水平分表方案

    mysql分库分表怎么实现_mysql水平分表方案这个数值依据: 这个数值与MySQL 的配置以及机器的硬件有关。因为,MySQL 为了提高性能,会将表的索引装载到内存中。InnoDB buffer size 足够的情况下,其能完成全加载进内存,查询

    2023-04-15
    158

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注