渲染原理
网络+渲染
网络:与服务器进行通信,包括DNS域名解析。
渲染:通信完成,浏览器最最开始收到的是01这样的字节数,然后转成字符串,浏览器已经拿到HTML文档,封装成一个渲染任务放到消息队列里边。
(一)主线程解析(DOM解析),最开始拿到的是字节,然后转成字符串,标记化拆分字符串(究竟使用了哪些标签和内容),构建出DOM节点树;**主线程在做这些。**
(二)外部链接的预解析(css外部文件+js外部文件)
CSS解析,在该线程解析不影响主线程,将解析的结果给主线程,这也是css解析线程不阻塞html解析的原因;CSS也可以形成样式树;
除了下载css文件,还会下载script文件,然后立即执行完js后才执行主线程解析DOM树(会修改当前的DOM树),是会阻塞主线程解!!!
(三)样式计算(最终的是rgba),DOM节点挂在最终样式,两棵树进行合并;
(四)布局树;(layout树css中的布局样式)
(五)分层
websocket
服务器主动推送数据给客户端(跨标签页通信)
npm i ws;
import WebSocket from 'ws';
const wss = new WebSocket.Server({ port: 8080 });
const ws = new WebSocket('ws://localhost:8080');