在Blink上工作不是件容易的事.Blink有很多专有的概念,并且有一套为了实现快速渲染引擎而引入的编码规范,这个对于新开发者来说并不是易事.即使是经验丰富的Blink开发人员也不容易,因为Blink非常庞大,对性能,内存和安全性极为敏感.

这篇文档的目的是帮助Blink的开发者快速熟悉架构:

  • 该文档并不是讲述Blink的详细架构和编码规则教程.相反,该文档简明的描述了Blink的短期内不太可能发生变化基本面,并指出如果你想了解更多信息,你可以阅读的资源有哪些。
  • 该文档没有解释具体的某些功能(例如,ServiceWorkers,编辑).相反,该文档解释了基本功能(例如,存储器管理,V8 API)。

Blink是干什么的?

进程/线程架构

目录结构

内存管理

任务调度

Page, Frame, Document, DOMWindow etc

V8和Blink

渲染流水线

问题?

Blink是web平台的一个渲染引擎.通俗的说,Blink实现了能在浏览器里呈现所有内容的能力:

  • 实现了浏览器平台的规范(例如html标志).包括DOM,CSS和Web IDL.
  • 嵌入了V8引擎和执行JavaScript
  • 从底层网络栈中请求资源
  • 构建DOM树
  • 计算样式和布局
  • 嵌入了chrome的排版器和图形绘制

blink通过Content public APIs嵌入了许多第三方的浏览器(例如chromium,android webview,Opear).

Untitled-Diagram
从代码库的角度看,"Blink"通常是指//third_party/blink/.从项目角度看,"Blink"通常是指实现项目的功能.实现Web平台功能的代码范围为:

  • //third_party/blink/
  • //content/renderer/
  • //content/browser/
  • 其他地方。
进程/线程架构