html
src和href的区别
- href用在a等元素上,src用在img,iframe,script上
- 请求资源类型不同:src指向具体的资源下载并应用到文档中,href用来建立当前元素和文档之间的连接
- 解析浏览器方式不同:src再浏览器中被解析到会暂停其他资源的下载和处理,并把该资源加载编译完成;href在文档中进行添加时,浏览器会识别到这个文档并命名为css文件,会下载合并资源,同时不会停止对当前文档的处理。
link和@import区别
link不会影响页面其他资源的解析,
相同:都是外部引用css的方式
不同:
- lik是xhtml标签,可以加载除了css外的其他事务;@import只能加载css
- link引用css时和页面同时加载;@import需要页面完全加载后加载
- link时chtml标签,无兼容问题;@import时css2.1提出的,低版本浏览器不支持
defer和async区别
- async,js加载和执行并行进行(异步),多个js文件加载顺序不会按照书写顺序进行。
- defer加载也是异步加载js文件,但是js要在所有元素解析完成后执行,domContentLoaded事件触发之前完成,多个defer会按照顺序加载。
总结:async和defer都是异步加载的,async多个js加载不按顺序进行,defer多个js加载按照顺序进行并且会在元素解析完成后执行,页面domContentLoaded事件触发之前完成。
js延迟脚本
async和defer
动态创建dom方式,文档加载完成后再动态的创建script标签来引入js脚本
使用settimeout延迟方法,设置定时器来延迟加载js脚本文件。
让js最后加载,将js脚本放在文档底部,来使js脚本尽可能的再最后来加载执行。
DomContentLoaded和load区别
DomContentLoaded:文档被完全加载和解析完后触发,不等待样式表、图像和子框架的完成加载。
load:页面元素全部都加载完成后触发。
html页面加载和解析流程
- 浏览器遇到link标签,发起请求,服务端返会链接的外部文件,开始渲染页面
- 遇到img标签,请求img资源,不等图片下载完,继续渲染后面的代码。
- 服务器返回图片,重新渲染页面
- 遇到js代码,下载好后直接运行,js中又影响布局的代码,浏览器重新渲染页面;
DOM和CSSom树的构建和渲染
- 下载html页面
- 加载其他静态资源
- 构建dom树
- 构建cssom树
- 渲染树(dom+cssom)
- 布局计算
- 渲染页面
dom和bom
文档对象模型和浏览器对象模型。
文档对象模型:定义处理网页的内容的方法和接口,核心是document,是window的子对象
浏览器对象模型:把浏览器当作对象,定义与浏览器进行交互的方法和接口。核心是window。
window对象含有location对象、navigator对象、screen对象等
escap、encodeURI、encodeURIComponent区别
- encodeURI对挣个uri进行转义
- encodeURIComponent会对url中的特殊字符进行转义
- escap和encodeURI区别,对于unicode编码为0xff之外字符会有区别,escape直接在字符的unicode编码前加上%u,encodeURI会将字符转换为utf-8的格式,再在每个字节前加%
- uri中的特殊字符+ 空格 = & % # / ?www.baidu.com?tab=aaa&tabName=bbb www.baidu.com/#/home