引言
HTML没必要耗费太大精力在上边,背太多也记不住,实际开发中常用的标签以及特性能用明白即可,用什么学什么才是王道,大概知道以下两点俺觉得应该是够了,以防打脸,不够面试回来再加~ 哈哈~
一、如何理解HTML语义化
- 对开发者来讲,可以提高代码可读性
- 对搜索引擎来讲,更便于搜索引擎搜索,爬虫依据标签来确定于关键字权重,这就是我们所说的seo
- 对浏览器来讲,在没有css的情况下可以呈现出有明确结构和层次的页面
二、script标签中的defer和async
首先我们得明白,在HTML会遇到以下三种类型的script:
<script src=""></script>
<script src="" async></script>
<script src="" defer></script>
- 第一种html遇到没有任何属性的script标签会暂停解析,先发送网络请求下载该js的代码内容,然后让js引擎执行该代码之后才会继续解析html,图解如下:
- 第二种html遇到async属性的script标签会异步发起网络请求,js脚本下载完成会打断html解析并执行脚本,脚本执行完之后会继续解析html,当然,如果在此之前html已经解析完了就是html的脚力NB,并不会影响阻塞的本质。图解如下:
- 第三种html遇到defer属性的script标签会异步发起网络请求,js脚本下载完成不会打断html解析,会等待html解析完成后执行脚本,图解如下:
总结:以上三种类型的script的执行顺序
| js执行顺序 | 是否组设html | |
| 无属性 | html顺序 | Y |
| async | 网络返回脚本顺序 | Y,除非html先于html执行完 |
| defer | html顺序 | N |