为了账号安全,请及时绑定邮箱和手机立即绑定

浏览器内核和js引擎

标签:
JavaScript

浏览器内核分为两种:渲染引擎和js引擎。

渲染引擎:负责网页内容(html/xml/图像),整理讯息(例如加入css),以及网页的显示方式,内核不同,页面展示方式也不同。

js引擎:是解析javascript语言,执行js语言实现页面的动态效果。

最开始渲染引擎和js引擎并没有很严格的区分,后来js引擎越来越独立,内核则倾向于只指渲染引擎,内核的种类很多,常见的内核有四种:Trident / Gecko / Blink / Webkit


700

内核对比

Trident内核

俗称IE内核,老得Triden内核(Ie6)当年市场份额很大,所以大量的网页时专门为老Trident内核编写,但是这些代码并不符合w3c规范。于是符合w3c规范标准的网页在老Trident内核下出现了偏差。

之后新的Trident内核被Ie9使用,对w3c的标准支持好了很多。

相关浏览器:

ie6,ie7,ie8(Trident4.0)   ie9(Trident 5.0)    ie10(Trident 6.0)

世界之窗,360浏览器(Trident+chrome内核) 遨游2.0(3.0开始使用webkit内核)


Gecko内核

基于Gecko内核的浏览器并不多见,出了一些简单的改动和重新编译,深度定制的还是很少见。

相关浏览器:

fireFox


webkit内核

由khtml内核发展而来,遵守w3c标准。

相关浏览器:

safari / chrome( 以前是webkit,现在是Blink) / android 默认浏览器

Blink内核

google开发,chrome的内核是由webkit内核改为Blink内核。

相关浏览器:

chrome


js引擎



700

js引擎对比


js引擎执行机制


前提,请先记住两点:

1.js是单线程的。

2.js event loop 就是js引擎的执行机制。


任务队列

单线程就意味着,所有的任务需要排队处理。当前一个任务结束后,才能执行下一个任务,如果前一个任务消耗了很长时间,那下一个任务就只能一直等着。

于是

所有任务分为两种:1.同步任务。2.异步任务。


700

结果:1  3  2

同步任务:指的是在主线程上排队执行的任务,只有前一个任务结束,才执行下一个任务。

异步任务:不进入主线程,而是进入任务队列(task queue),只有task queue 通知主线程,某个异步任务可以执行了,才回被放到主线程执行。

js引擎执行机制如下:

(1)所有同步任务都在主线程上,形成一个执行栈。

(2) 主线程外,还有一个task queue,只要异步任务有了运行结果,就在task queue中放置一个事件。

(3)当执行栈所有同步任务之行结束后,系统会读取 task queue,看看里面有哪些事件,于是这些异步任务,结束等待状态,进入执行栈,开始执行。

(4)主线程不断重复第三步。



作者:麦子_FE
链接:https://www.jianshu.com/p/5f3a70382d3a


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消