先加载css还是js?

先加载css还是js?

先加载css,后加载js。因为css加载会阻塞浏览器渲染,为了打开网页白屏时间缩短,会优先选择加载css;后加载js是因为js中可能会修改dom元素,js加载会阻塞浏览器解析html,造成获取不到dom的情况。

<head>
  <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视频教程

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标签之后,这样就不会出现加载的冲突了。

Image placeholder
前端答疑
未设置
  29人点赞

没有讨论,发表一下自己的看法吧

推荐文章
html怎么加载css?

有四种加载方式:行内式通过html的style属性实现,如下所示//写在body标签中 行内式嵌入式在style标签中写css样式,在body中引用//写在style标签中的css样式 p{ colo

https无法加载css js资源怎么办?

https无法加载cssjs资源怎么办?在https的网站中引用http路径的js或css会导致不起作用,其形如:解决办法:将http:去掉,改为浏览器默认是不允许在HTTPS里面引用HTTP资源的,

wordpress无法加载css

wordpress无法加载css出现这种情况是因为wordpress安装时用http://localhost访问来安装,局域网访问时,加载css的路径不对,所以会出现css无法加载,只显示文字。解决方

无法加载css是什么原因?

CSS能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。有时会出现无法加载css样式的情况,例如:当我们打开网页时,网页布局完整,但却没有任

服务器不加载css样式表

服务器不加载css样式表的原因:●HTML文件中,引用css样式表的路径填写错误导致的。●nginx做代理后的虚拟路径和静态资源的请求路径不一致导致的。●样式文件编码和网页编码不一致,导致不能解析cs

iis不加载css怎么办?

iis不加载css怎么办?解决方法:打开或关闭window功能中的Internet信息服务里的万维网服务=>常见HTTP功能=>静态内容选中后安装即可。

先学php还是javascript?

javascript是前台的东西,PHP是后台的东西,两者先学谁都是一样的。两者之间没有啥实质性的必然联系。Javascript就是浏览器执行的脚本语言,控制页面内容。php就是服务器端执行的语言,读

母延年:希望以后提到Lucene除了ES还能想到录信

在搜索领域你可能没有听过“录信”,但是一定听过Lucene。录信数软CTO母延年“‘录信’是‘Lucene’的谐音,我的Lucene发音不太准。”在刚刚过去的SACC2019大会上,录信数软CTO母延

jquery判断是否是json

jquery判断是否是json思路:使用jquery的parseJSON,将字符串转为json对象,并用trycatch语句捕获错误,没有异常,则是json格式,否则不是。functionfun(st

jsp里怎么写css?

jsp里怎么写css?1、在head标签内写和html加入的方式一样,在head标签之内,title标签之外写开闭标签,具体样式内容写到开闭标签之内。示例如下: .input{color:#f00;

小程序怎么用js修改css?

小程序怎么用js修改css?微信小程序和普通的前端开发有很多不同。前端开发中修改样式,js可以操作DOM,即document.getElementById(id).style.property=new

判断是否是jquery对象?

判断是否是jquery对象?要判断一个javascript的对象是什么类型,可以使用typeof,但是typeof只能判断出js的基础对象(string,boolean,number,object)。

什么是jquery插件?

什么是jquery插件?jQuery插件,就是开发爱好者自己利用Jquery制作的特效,然后经过封包或包装处理成js文件,发布到网上供大家使用的脚本集合。通常这类插件除了调用jQuery库文件,还需要

什么是jquery?

什么是jQuery?jQuery是一个快捷、小型、功能丰富的Javascript库。它使诸如HTML文档遍历和操作,事件处理、动画和Ajax更简单。它可以跨越多种浏览器,具有通用性和可扩展性。jQue

nodejs怎么解析less?

nodejs怎么解析less?在cmd中使用npm中的less模块来解析less。npm(全称NodePackageManager,即“node包管理器”)是以JavaScript编写的软件包管理系统

Java Web html无法引用css?

JavaWebhtml无法引用css?javaweb中html无法引用css是因为css文件放置的位置不正确,css文件应该放在与WEB-INF同级目录,而不是WEB-INF文件夹内。(相关课程推荐:

react如何使用css?

react如何使用css?在react中使用css有以下几种方法一、全局使用app.jsimportReactfrom'react'; importRouterfrom"./router" impor

div中怎么调用css?

div中怎么调用css?div中调用css样式有多种方法,比如:1、在style标签中调用css样式;2、添加class属性调用css样式;3、添加id属性调用css样式。1、DIV标签内直接应用CS

dreamweaver怎么新建css?

dreamweaver怎么新建css?1、新建一个htlm文档,在body中插入一个div,将ID命名为main2、在右侧的CSS设计器点击源的加号,选择在页面中定义3、点击选择器的加号,输入#mai

多个ul怎么定义不同css?

多个ul怎么定义不同css?相同的元素,定义不同的css,只需要活用选择器就可以实现了。1、给ul命名,idclass都行,例如 CSS中就是把ul换成相应的名字:(注意空格)div#myul{}//

koala如何压缩css?

koala如何压缩css?koala是一个前端预处理器语言图形编译工具,支持Less、Sass、Compass、CoffeeScript,帮助web开发者更高效地使用它们进行开发。跨平台运行,完美兼容

为什么用CSS?

CSS主要用来设计网页的样式,美化网页;它不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥

【CSS全解01】CSS基础-体系化学CSS

大纲 基础部分学习占比:HTML1%`CSS19%Javascript80%`(`基础部分?%框架?%`项目?%) CSS历史 AcidTestforbrowser CSS是艺术(非逻辑,用测试经验来

为什么要用Node.js?

JavaScript的日益发展带来了很多变化,当今的Web开发面貌已经变得截然不同。在几年前是很难想象在服务器上运行JavaScript的。在深入研究Node.js之前,你可能想了解使用跨栈的Java

不一样的css,sass(scss)的基本使用

前言此文主要记录sass的scss语法的基本使用。sass是css的预编译器,它扩展一些css所没有的变量的定义、条件控制、循环、自定义方法等。基础内容1.变量/*scss*/ //声明变量 $pri