浏览器

HTTP请求

完整的http解析过程: 对网址进行DNS解析(得到ip地址)-----》  建立TCP连接三次握手----》发送http请求----》服务器响应http请求返回响应结果----》浏览器得到资源文件

下一步渲染页面

解析HTML文件,创建DOM树;解析CSS 创建CSSOM树

----->将CSS与DOM合并,形成render树 (构建DOM树期间,如果遇到JS,阻塞DOM树及CSSOM树的构建,优先加载JS文件)

----->布局和绘制(重排与重绘):

重排:浏览器把各个dom元素放在它应有的位置 的过程就叫重排

重绘:页面要呈现的内容通通画到屏幕上(重排必将引起重绘,而重绘不一定会引起重排)

注:css的link写在前面  js的script写在后面   

因为css加载是异步的,可以与DOM树同时进行,生成render树,再进行渲染,

而渲染CUI与js文件的加载是互斥的 ,js会影响界面的渲染,而且不要着急那么快加载js,因为它要等界面渲染完才用得上)

或者 :在标签上添加了 `async` 或 `defer` 等属性,浏览器会异步的加载和执行JS代码,而不会阻塞渲染

 

浏览器的运行机制

 浏览器是多进程的,其中包含了:

     1)GPU进程

     2)第三方插件进程

     3)浏览器渲染进程

     4)Browser进程

浏览器渲染进程是多线程的,其中包括以下线程:

     1)GUI渲染线程   --->  界面渲染(JS引擎线程和GUI渲染现场是冲突的)

     2)JS引擎线程     --->   JS处理  

     3)事件触发线程  --->   事件处理

     4)定时器线程      --->   定时器处理

     5)http异步请求线程     ----> 异步请求处理

  在JS引擎线程中,可以分为同步和异步任务,其中:

    1)同步任务全部通过主线程执行,形成 执行栈(函数调用形成了一个栈帧,子函数被一个一个加加进去)

    2)异步任务通过事件触发线程或者定时器线程处理,形成 任务队列,异步又分macrotask(setInterval()setTimeout()

) 和  microtask,先微后宏

    3)当执行栈中的任务全部处理完成,主线程为空闲的时候,会从任务队列中提取任务到执行栈中执行。

 

context: 当我们调用一个方法的时候,js会生成一个与这个方法对应的执行环境(context),又叫执行上下文。这个执行环境中存在着这个方法的私有作用域,上层作用域的指向,方法的参数,这个作用域中定义的变量以及这个作用域的this对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值