详解关于html,css,js三者的加载顺序问题


Posted in Javascript onApril 10, 2019
<head lang="en">
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="css/*.css" rel="external nofollow" >
  <script src="js/*.js></script>
</head>

DOM文档的加载顺序是由上而下的顺序加载;

1、DOM加载到link标签

css文件的加载是与DOM的加载并行的,也就是说,css在加载时Dom还在继续加载构建,而过程中遇到的css样式或者img,则会向服务器发送一个请求,待资源返回后,将其添加到dom中的相对应位置中;

2、DOM加载到script标签

由于js文件不会与DOM并行加载,因此需要等待js整个文件加载完之后才能继续DOM的加载,倘若js脚本文件过大,则可能导致浏览器页面显示滞后,出现“假死”状态,这种效应称之为“阻塞效应”;会导致出现非常不好的用户体验;

而这个特性也是为什么在js文件中开头需要$(document).ready(function(){})或者(function(){})或者window.onload,即是让DOM文档加载完成之后才执行js文件,这样才不会出现查找不到DOM节点等问题;

js阻塞其他资源的加载的原因是:浏览器为了防止js修改DOM树,需要重新构建DOM树的情况出现;

3、解决方法

前提,js是外部脚本;

在script标签中添加 defer=“ture”,则会让js与DOM并行加载,待页面加载完成后再执行js文件,这样则不存在阻塞;

在scirpt标签中添加 async=“ture”,这个属性告诉浏览器该js文件是异步加载执行的,也就是不依赖于其他js和css,也就是说无法保证js文件的加载顺序,但是同样有与DOM并行加载的效果;

同时使用defer和async属性时,defer属性会失效;

可以将scirpt标签放在body标签之后,这样就不会出现加载的冲突了。

以上所述是小编给大家介绍的关于html,css,js三者的加载顺序问题详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
用JS实现的一个include函数
Jul 21 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
Mar 26 Javascript
js点击页面其它地方将某个显示的DIV隐藏
Jul 12 Javascript
javascript的动态加载、缓存、更新以及复用(一)
Jun 09 Javascript
jQuery如何防止这种冒泡事件发生
Feb 27 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
Apr 17 Javascript
vue-loader教程介绍
Jun 14 Javascript
js用类封装pop弹窗组件
Oct 08 Javascript
利用Decorator如何控制Koa路由详解
Jun 26 Javascript
Vue+axios实现统一接口管理的方法
Jul 23 Javascript
微信小程序如何获取用户收货地址
Nov 27 Javascript
node使用async_hooks模块进行请求追踪
Jan 28 Javascript
angular2 NgModel模块的具体使用方法
Apr 10 #Javascript
bootstrap tooltips在 angularJS中的使用方法
Apr 10 #Javascript
javascript判断一个变量是数组还是对象
Apr 10 #Javascript
Angular CLI 使用教程指南参考小结
Apr 10 #Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
Apr 10 #Javascript
element-ui多文件上传的实现示例
Apr 10 #Javascript
基于mpvue搭建微信小程序项目框架的教程详解
Apr 10 #Javascript
You might like
利用 window_onload 实现select默认选择
2006/10/09 PHP
PHP ajax 分页类代码
2008/11/13 PHP
php学习之变量的使用
2011/05/29 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
python里大整数相乘相关技巧指南
2014/09/12 Python
Python3数字求和的实例
2019/02/19 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
python中pow函数用法及功能说明
2020/12/04 Python
python Scrapy框架原理解析
2021/01/04 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
python压包的概念及实例详解
2021/02/17 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
领导班子三严三实对照检查材料
2014/09/25 职场文书
农业项目合作意向书
2015/05/08 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
vue中 this.$set的使用详解
2021/11/17 Vue.js