浏览器工作流程

浏览器工作流程主要有四步:
1.将HTML解析为DOM树。
2.渲染解析出的DOM树。
3.布局(确定每一个dom节点的位置)。
4.绘制(在浏览器中呈现出这些dom节点)。

火狐的Gecko ,与谷歌的webkit大致流程相同,个别名字不同火狐的布局叫做(reflow,重排)。

dom操作优化

在实际的开发和使用中,不同的操作,会导致浏览器进行布局(重排)和绘制。比如,js获取dom节点的位置值,包括但不限于height,width,top…等等。因为这些值都是动态计算的,所以浏览器需要尽快完成页面的绘制,然后计算返回值,从而打乱了重排或重绘的优化。所以,在开发中需谨慎取得DOM元素的布局信息。

解析

解析的过程可以分成两个子过程:词法分析和语法分析
词法分析(英语:lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。进行词法分析的程序或者函数叫作词法分析器(Lexical analyzer,简称Lexer),也叫扫描器(Scanner)。词法分析器一般以函数的形式存在,供语法分析器调用。 完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。
语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确。

HTML解析过程由两个阶段组成:标记化和树构建。
标记化
遇到字符 < 时,状态更改为“标记打开状态”。
接收一个 a-z 字符会创建“起始标记”,状态更改为“标记名称状态”。
遇到 > 标记时,会发送当前的标记,状态改回“数据状态”。
树构建

//initial mode
<html> //before html
<head>//before head
//in head
</head>//after head<body>Hello world//in body</body>//after body
</html>

呈现树和 DOM 树的关系

在 DOM 树构建的同时,浏览器还会构建另一个树结构:呈现树。这是由可视化元素按照其显示顺序而组成的树,也是文档的可视化表示。它的作用是让您按照正确的顺序绘制内容。

布局

呈现器在创建完成并添加到呈现树时,并不包含位置和大小信息。计算这些值的过程称为布局或重排。为避免对所有细小更改都进行整体布局,浏览器采用了一种“dirty 位”系统。如果某个呈现器发生了更改,或者将自身及其子代标注为“dirty”,则需要进行布局。

全局布局和增量布局

全局布局是指触发了整个呈现树范围的布局,触发原因可能包括:

1.影响所有呈现器的全局样式更改,例如字体大小更改。
2.屏幕大小调整。
布局可以采用增量方式,也就是只对 dirty 呈现器进行布局。

绘制

在绘制阶段,系统会遍历呈现树,并调用呈现器的“paint”方法,将呈现器的内容显示在屏幕上。绘制工作是使用用户界面基础组件完成的。

绘制顺序

1.背景颜色
2.背景图片
3.边框
4.子代
5.轮廓

了解一点浏览器的工作流程相关推荐

  1. 浏览器工作流程_浏览器如何工作

    浏览器工作流程 by Alex Nadalin 通过亚历克斯·纳达林 浏览器如何工作 (How Browsers Work) Web应用程序安全性简介 (An Introduction to Web ...

  2. 充电计划 -- 浏览器工作流程、渲染流程

    浏览器工作流程(渲染流程) 前提 HTTP与TCP/IP区别 HTTP的三大风险 浏览器工作原理 HTTP工作原理 HTTPS工作原理 单向验证 双向认证 浏览器的渲染过程 参考博客:前端面试题必考( ...

  3. 浏览器渲染html的流程,浏览器渲染的工作流程和图片加载与渲染规则

    1 浏览器渲染的工作流程 浏览器的工作原理.以Webkit引擎的工作流程为例,浏览器加载一个HTML页面后进行如下操作 解析HTML[遇到标签加载图片] -> 构建DOM树 加载样式 -> ...

  4. 关于RemoteView的一点愚见(RemoteView在AppWidget中的工作流程)

    前言 由于公司环境恶劣,小菜鸟我本来想画UML图来显示类与类之间的关系,可惜这个念头无法达成,也只好用Word文档来完成.待菜鸟我辞职了,再自己画上UML图和Gif动态图,来显示类于类之间的关系.所以 ...

  5. travis ci_如何使用Travis CI和GitHub进行Web开发工作流程

    travis ci by Vijayabharathi Balasubramanian 通过Vijayabharathi Balasubramanian 如何使用Travis CI和GitHub进行W ...

  6. 史上最全!图解浏览器的工作原理

    可能每一个前端工程师都想要理解浏览器的工作原理. 我们希望知道从在浏览器地址栏中输入 url 到页面展现的短短几秒内浏览器究竟做了什么: 我们希望了解平时常常听说的各种代码优化方案是究竟为什么能起到优 ...

  7. WEB HTTP:浏览器HTTP协议漫谈、请求对象Httprequest、响应对象HttpResponse、浏览器内部工作原理(待完善)

    0 系列目录 WEB请求处理 WEB请求处理一:浏览器请求发起处理 WEB请求处理二:Nginx请求反向代理 WEB请求处理三:Servlet容器请求处理 WEB请求处理四:Tomcat配置实践 WE ...

  8. 【译】浏览器如何工作:在现代web浏览器场景的之下

    原文地址. ( 译者注:这是一篇深度好文,并且附带官方简体中文.本次的翻译为一人完成,限于水平,难免有误,故需要学习本文内容的同学请直接参考原文地址进行阅读. 导读: 终于,我在一周之内讲这长篇大论的 ...

  9. 浏览器如何工作:在现代web浏览器场景的之下

    原文链接 原文:原文地址 ( 译者注:这是一篇深度好文,并且附带官方简体中文.本次的翻译为一人完成,限于水平,难免有误,故需要学习本文内容的同学请直接参考原文地址进行阅读. 导读: 终于,我在一周之内 ...

最新文章

  1. transparentblt函数实现透明贴图 (上)
  2. 【Raspberry pi】系统安装及基础配置
  3. 常见Java集合的实现细节
  4. 深度学习代码注解(一)—— mnistdeepauto
  5. UE4中UnLua基础
  6. Quartus II14.1安装教程
  7. ASP.NET Core 实现基于 ApiKey 的认证
  8. Android--调用系统照相机拍照与摄像
  9. Matlab绘图设置总结
  10. shell 备份并删除几日内的历史文件
  11. celery+rabbitmq+redis 分布任务队列探索(一)
  12. 数学建模美赛E题数据获取
  13. IE浏览器调用ocx控件实现PDF、图片文件打印
  14. python输出日历_python输出指定月份日历的方法
  15. win10+VS2017+DX11踩的那些雷
  16. pdm系统是归档服务器吗,PDM系统档案管理
  17. oracle数据库alter table,oracle 数据库 alter table的用法(经典)
  18. 等高线的matlab编程,matlab等高线
  19. java url参数转map_url参数和map之间的转换
  20. arduino uno r3单片机封装图_单片机控制的OLED简易电子表原型

热门文章

  1. linux修改ssh端口失败
  2. Windows下Nginx的启动、停止等命令
  3. MADlib——基于SQL的数据挖掘解决方案(16)——回归之弹性网络回归
  4. java常用修饰符(随堂笔记)
  5. 联合国新的文盲标准:不会用电脑成新文盲
  6. 高通SDX12:小网SIM卡QMI拨号无法获取IPv6地址问题的分析
  7. (4)中心化和非中心化网络游戏比较
  8. 我的世界饮水系统服务器,我的世界1.7.10服务器似水流年
  9. FDMA 和 OFDMA 的区别是什么?
  10. const的用法,Const函数,Const变量,函数后面的Const