浏览器工作流程、V8引擎的原理

64 阅读1分钟

浏览器工作流程

浏览器工作流程大致分为以下步骤:DNS 解析 —— HTTP 请求资源 —— 解析 HTML 创建 DOM 树 —— 解析 CSS 创建 CSSOM —— 执行 Javascript —— 创建 Render 树 —— 布局Layout(重排)—— 绘制 Painting(重绘)

V8引擎原理

image.png

V8 的核心模块包括:

  • Parser:解析器负责将 JavaScript 代码转换成 AST 抽象语法树。
  • Ignition:解释器负责将 AST 转换为字节码,并收集 TurboFan 需要的优化编译信息。
  • TurboFan:利用解释器收集到的信息,将字节码转换为优化的机器码。

解析器 Parser 生成抽象语法树

解析器的解析过程分为两个阶段:

  • 词法分析 (Scanner 词法分析器)
  • 语法分析 (Pre-Parser、Parser 语法分析器)

词法分析

Scanner 负责接收 Unicode Stream 字符流,将其解析为 tokens,提供给解析器 Parser

语法分析

接下来,语法分析会将上一步生成的 tokens,根据语法规则转换为 AST,如果源码存在语法错误,在这一阶段就会终止并抛出语法错误。

惰性解析

惰性解析就是指如果遇到并不是立即执行的函数,只会对其进行预解析(Pre-Parser),当函数被调用时,才会对其完全解析。

预解析时,只会验证函数的语法是否有效、解析函数声明以及确定函数作用域,并不会生成 AST,这项工作由 Pre-Parser 预解析器完成。

解释器 Ignition 转换为字节码

编译器 TurboFan 优化代码执行流程