关于游览器和V8

本文深入探讨JavaScript引擎V8,阐述其为何存在以及Parse、Ignition、TurboFan三个核心模块的作用。同时,讲解浏览器内核、常驻线程、渲染流程,以及Chrome打开页面涉及的进程。通过对关键渲染路径的分析,揭示了CSS如何影响DOM解析和页面渲染。
摘要由CSDN通过智能技术生成

V8

在这里插入图片描述

为什么需要JavaScript引擎?

首先,我们需要知道JavaScript是一门高级编程语言,所有的高级编程语言都是需要转换成最终的机器指令来执行的;而我们知道编写的JS代码可以由浏览器或者Node执行,其底层最终都是交给CPU执行;但是CPU只认识自己的指令集,也就是机器语言,而JavaScript引擎主要功能就是帮助我们将JavaScript代码翻译CPU所能认识指令,最终被CPU执行;

和其他 JavaScript 引擎一样,V8 会编译 / 执行 JavaScript 代码,管理内存,负责垃圾回收,与宿主语言的交互等。通过暴露宿主对象 ( 变量,函数等 ) 到 JavaScript,JavaScript 可以访问宿主环境中的对象,并在脚本中完成对宿主对象的操作。

V8的底层架构主要有三个核心模块(Parse、Ignition和TurboFan)

Parse模块

将JavaScraipt代码转换成AST(抽象语法树):该过程主要对JavaScript源代码进行词法分析和语法分析;

  • 词法分析:对代码中的每一个词或符号进行解析,最终会生成很多tokens(一个数组,里面包含很多对象)
  • 语法分析:在词法分析的基础上,拿到tokens中的一个个对象,根据它们不同的类型再进一步分析具体语法,最终生成AST;

AST在前端应用场景特别多,比如将TypeScript代码转成JavaScript代码、ES6转ES5、还有像vue中的template等,都是先将其转换成对应的AST,然后再生成目标代码

Ignition模块

一个解释器,可以将AST转换成ByteCode(字节码)。

字节码(Byte-code):是一种包含执行程序,由一序列 op 代码/数据对组成的二进制文件,是一种中间码。

问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值