哲学原理前端工程师需要了然的「浏览器渲染」

by admin on 2018年12月18日

前端工程师为啥用明白浏览器渲染?

比如从完美(Pixel Perfection)、分辨率无关(Resolution
Independent)和多平台体验一致性是设计师们的追求。
可访问性(Accessability)、加载性能同重构灵活性则是前者工程师们关心的主旨。其中加载性能与浏览器的渲染机制深入挂钩,弄精晓浏览器背后的渲染机制,才可以当平时的前端的开中知晓怎么着开展性能优化。

                                               
                  初探.NET底层原理

浏览器咋样渲染页面

浏览器解析
1、浏览器通过请的 URL
举办域名解析,向服务器发起呼吁,接收文件(HTML、CSS、JS、Images等等)。
2、HTML 文件加载后,开头构建 DOM Tree
3、CSS 样式文件加载后,起头解析及构建 CSS Rule Tree
4、Javascript 脚本文件加载后, 通过 DOM API 和 CSSOM API 来操作 DOM Tree
和 CSS Rule Tree

浏览器渲染
1、浏览器引擎通过 DOM Tree 和 CSS Rule Tree 构建 Rendering Tree
2、Rendering Tree 并无与 DOM Tree 对应,比如像 <head>
标签内容依然包含 display: none; 的要素节点并无包以 Rendering Tree 中

3、通过 CSS Rule Tree 匹配 DOM Tree 举行固化坐标和分寸,是否换行,以及
position、overflow、z-index 等等属性,这些历程叫 Flow 或 Layout 。
4、最后经过调用Native GUI 的 API 绘制网页画面的经过叫 Paint 。

Webpage Rendering

当用户以浏览网页时举办互或通过 js
脚本改变页面结构时,以上之片操作暴发或再也运行,此过程叫 Repaint 或
Reflow。

Repaint
当元素改变的时刻,将非会晤潜移默化因素以页面中的职务(比如 background-color,
border-color,
visibility),浏览器就会以新的体制重绘此因素,此过程叫 Repaint。

Reflow
当元素改变的时节,将相会潜移默化文档内容或结构,或因素地点,此过程叫
Reflow。( HTML 使用的凡 flow based layout
,也就是流式布局,所以,假诺某元件的几何尺寸暴发了扭转,需要重布局,也就是被
Reflow。)

Reflow 的本较 Repaint 的本高得多之大多。一个结点的 Reflow
很有或导致子结点,甚至父点以及同级结点的 Reflow
。在一些赛性能的电脑上也许还并未什么,然而要 Reflow
暴发在手机上,那么是过程是延慢加载与耗电之。—-浏览器的渲染原理简介

以下行为拿发出或暴发 Reflow

  • 增加、删除、或改变 DOM 节点
  • 增加、删除 ‘class’ 属性值
  • 要素尺寸改变
  • 文本内容改动
  • 浏览器窗口改变大小要拖动
  • 动画片效果举办总计和转移 CSS 属性值
  • 伪类激活(:hover)

栗子:

�Repaint and Reflow

自然,大家的浏览器是聪明的,它不会面像面这样,你各种变动一不良样式,它就
Reflow 或 Repaint
一不行。一般的话,浏览器会把这样的操作积攒一批,然后做同蹩脚 Reflow
,这还要让异步 reflow 或增量异步 Reflow
。不过来头情形浏览器是未汇合这么做的,比如:Resize
窗口,改变了页面默认的书,等。对于这多少个操作,浏览器会就展开 Reflow
。—-浏览器的渲染原理简介

     
学习C#距不开.net平台,因为微软的开销平台真正是极致强了,它吗各样一个开发者都做了极端多尽多,但是咱不光使清楚怎么用,而且为理应明了其中的里到底含了呀。本篇作品不仅说话有C#语言的学问,也包括.net平武汉之局部周转的机理。

怎么优化浏览器渲染过程

极品实践
1、创造设银行的 HTML 和 CSS
,不要遗忘指定文档编码,比如<meta charset="utf-8">
2、CSS 样式应该包含在 <head>中, Javascript 脚本出现在
<body>末尾。
3、裁减 CSS 嵌套层级与挑选适宜的接纳器,可参考 怎么升级 CSS
选取器性能

4、不要通过 JS 逐条修改 DOM 的体裁,提前定义好 CSS 的 Class 举办操作。

提前定义好 CSS 的 Class

5、尽量缩短将 DOM 节点属性值放在循环当中,会导致大气读写这属性值。
6、尽可能的也罢爆发动画的 HTML 元素使用 fixed 或 absolute 的 position
,那么修改他们之 CSS 是匪会师 Reflow 的。

     
比较Java由于微软本着C#言语的卷入,让洋洋人在这一个深造的较长期内无法深入领会。举个简单的例子:我们知道C#言语关于字段的包:在C#语言的贯彻中是get和set属性,而以Java中确确实实是get和set方法给人洞悉,其实C#啊是采纳get,set方法实现之,只可是封装起来,大家看不到而已。

     
上边咱们拿上马说起C#言语中的底原理:

      首先我们设知道其他语言的周转,归根结底是机器语言的运转,也便是大量底01数字。而C#言语也亏依靠.net平台,将这种高级语言编译成01代码。那么C#语言在.net平苏州之编译过程到底是怎么着的也罢?

 

哲学原理 1

其实.NET平台相当于Java中的虚拟机,通过C#编译器得到中语言(一栽非常之许节码),运行时重经由CLR中之JIT(just in 提姆e)编辑器编译为机械代码,便于OS执行。

那么下我们来拘禁一下.NET丁蕴藏哪些内容?

哲学原理 2

 

欠图也.NET平台机构图,可以发现VS.NET框架的核心技术为官语言运行时(CLR)而且还带有BCL(基础类库)以及.NET中的各样语言,为什么会暴发如此多种语言可以在.net平台受到运行为?其实,以上之各个语言都足以编写面向CLR的程序代码,这种代码在.net中受称为托管代码,所有的托管代码都好在CLR上运行,具有平台无关性。为什么.net无法落实超越平台吗?例如当Linux中为什么未得以实现asp.net或者winform呢,其实就是以无面向Linux开发之CLR(然则mono貌似已经实现了,由于我一向不接纳了,所以便未予置讲了),就是这样的因,.net未能兑现跨越平台。

     
上面我们来拘禁CLR中之盈盈怎么着内容?  

哲学原理 3

 Base
Class LIbrary Support:基础类库帮助

 Thread
Support:CLR帮忙多线程(任何语言都可选拔是提供的劳动来开展编辑多线程应用程序)。

COM
马尔斯(Mars)haler:向下兼容(详细内容请圈:https://msdn.microsoft.com/zh-cn/library/bb822049(v=vs.110).aspx.aspx))

Type
Cheker:类型安全实施(任何不符合项目安全之胁迫转换后,都会见举办检讨,除此之外还自行检查无起先化的变量和跨索引的数组)

Exception
Manager:卓殊处理体制

IL to Native Compliers:是借助用CLR对MSIL举行编译成机器代码。

GC:垃圾回收器并无可知管理内存中所有的资源,开发人士依旧要自己写代码实现回收,如使用close方法和dispose方法。

继承内容以逐日健全,请持续关注!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图