web前端-js小记(1)

1. CSS和JS在网页中的放置顺序是怎样的?

  1. css样式放在head标签中,通常引入方式为
<link href="index.css" rel="stylesheet" type="text/css"></link>
  1. js放置在body标签的最后,因为相对于其他的图片或者css来说,js是阻塞的,所以等页面的渲染树成行后引入js就可以避免白屏现象,通常外链引入方式为
<script src="index.js"></script>

2. 解释白屏和FOUC

  1. 白屏:其实是浏览器在渲染页面的时候请求时间过长导致的,如chrome的渲染流程是解析HTML-->构建Dom-->解析Css-->构建Cssom-->组合Dom和Cssom成渲染树(Render Tree)-->在渲染树的基础上布局并进行计算-->把节点绘制到屏幕上(painting)。所以,如果把样式放在页面底部会出现白屏现象。如果使用@import标签载入样式,即使把样式放在head标签中,也会出现白屏现象。如果把js放在head里或者body中间,JS加载时会阻塞后面内容的呈现,页面也可能会出现白屏现象。
  2. FOUC:其实是FireFox的渲染逻辑和Chrome的不太一样,Chrome是等待渲染树和位置计算好才会出来网页的内容,但到了FireFox每加载一次dom树就会重绘一次网页样式,一直到所有内容完成为止,所以一般我们用link把css放在header内.

3. async和defer的作用是什么?有什么区别

使用方法:
<script async src="index.js"></script>
<script defer src="index.js"></script>
  1. 通常情况下,即没有async和defer,浏览器会立即加载并执行指定的脚本,即渲染到script就会立即加载并执行js。
  2. 有async的情况下,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行。
  3. 有defer的情况下,加载后续文档元素的过程将和 script.js 的加载并行进行,但执行js是等所有元素加载完成后再执行。


  • 由图可知:1. defer 和 async 在网络读取(下载)这部分是一样的,都是异步的(相较于 HTML 解析)。2. 两者的差别在于脚本下载完之后何时执行,由图知defer是按照加载顺序执行脚本的,这一点要善加利用。3. async 则是乱序执行,所以不管你声明的顺序如何,只要它加载完了就会立刻执行。

4. 简述网页的渲染机制

  1. 解析HTML标签,生成DOM树
  2. 解析CSS元素,生成CSSOM树
  3. 把DOM和CSSOM组合成渲染树
  4. 在渲染树的基础上进行布局,计算每个节点的几何机构
  5. 把每个节点绘制到屏幕上

(mission 1)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. CSS和JS在网页中的放置顺序是怎样的? css放在head标签内,防止渲染时出现白屏 js放在最后body...
    billa_8f6b阅读 639评论 0 0
  • 简单介绍JavaScript的发展历史 JavaScript因互联网而生,回顾它的历史要从浏览器的历史讲起。 19...
    _Dot912阅读 622评论 0 3
  • 任务 CSS和JS在网页中的放置顺序是怎样的? 解释白屏和FOUC async和defer的作用是什么?有什么区别...
    mhy_web阅读 612评论 0 1
  • JavaScript基本概念、基础数据类型、运算符、流程控制语句。 一、CSS和JS在网页中的放置顺序是怎样的? ...
    婷楼沐熙阅读 538评论 0 2
  • CSS和JS在网页中的放置顺序 一般而言,因为HTML是一种相对松散的文档类型,同时浏览器的容错性又非常高,所以C...
    ezrealor阅读 187评论 0 0

友情链接更多精彩内容