继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

浏览器内核和js引擎

MYYA
关注TA
已关注
手记 300
粉丝 75
获赞 326

浏览器内核分为两种:渲染引擎和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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP