浏览器引擎面纱揭秘

浏览器内核:

1.渲染引擎
2.js引擎

JS引擎:
1.编译器
2.解释器
3.JIT工具
4.垃圾回收

解释器
也称为 JS 解释器,用来读取网页中的 JavaScript 代码,对其处理后运行,比如 Chrome 浏览器的 V8

下面介绍V8引擎


JIT工具:实际上是是一种编译器,即时编译器
JIT是一种提高程序运行效率的方法。通常,程序有两种运行方式:静态编译与动态解释。静态编译的程序在执行前全部被翻译为机器码,
而动态解释执行的则是一句一句边运行边翻译。

垃圾回收是防止内存泄漏


JS是单线程.但是浏览器是多进程的


V8引擎:
官方原话:V8是Google的开源的JavaScript和WebAssembly引擎,用C++编写。

V8是谷歌开源的JS引擎

运行流程

解析器[Parser] 将JS解析成AST
解释器会将AST翻译形成字节码.
优化编译器,会对编译的代码进行优化,最终形成字节码

AST 抽象语法树
抽象表示把js代码进行了结构化的转化,转化为一种数据结构。这种数据结构其实就是一个大的json对象,json我们都熟悉,
他就像一颗枝繁叶茂的树。有树根,有树干,有树枝,有树叶.无论多小多大,都是一棵完整的树。

不专业的语言就是把js代码=>json对象
AST的作用
 AST的作用不仅仅是用来在JavaScript引擎的编译上,我们在实际的开发过程中也是经常使用的,
比如我们常用的babel插件将 ES6转化成ES5、使用 UglifyJS来压缩代码 、css预处理器、开发WebPack插件、
Vue-cli前端自动化工具等等,这些底层原理都是基于AST来实现的,AST能力十分强大, 
能够帮助开发者理解JavaScript这门语言的精髓。
 我们可以直接使用三方库来生成AST,这里推荐两个库,一个是recast,一个是babel用到的Babylon。
这里推荐babel插件手册去实际体验转换js代码的过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼程序员

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值