关于游览器和V8
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 代码/数据对组成的二进制文件,是一种中间码。
问

本文深入探讨JavaScript引擎V8,阐述其为何存在以及Parse、Ignition、TurboFan三个核心模块的作用。同时,讲解浏览器内核、常驻线程、渲染流程,以及Chrome打开页面涉及的进程。通过对关键渲染路径的分析,揭示了CSS如何影响DOM解析和页面渲染。
最低0.47元/天 解锁文章
591

被折叠的 条评论
为什么被折叠?



