浏览器内核分为两种:渲染引擎和js引擎。
渲染引擎:负责网页内容(html/xml/图像),整理讯息(例如加入css),以及网页的显示方式,内核不同,页面展示方式也不同。
js引擎:是解析javascript语言,执行js语言实现页面的动态效果。
最开始渲染引擎和js引擎并没有很严格的区分,后来js引擎越来越独立,内核则倾向于只指渲染引擎,内核的种类很多,常见的内核有四种:Trident / Gecko / Blink / Webkit
内核对比
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引擎
js引擎对比
js引擎执行机制
前提,请先记住两点:
1.js是单线程的。
2.js event loop 就是js引擎的执行机制。
任务队列
单线程就意味着,所有的任务需要排队处理。当前一个任务结束后,才能执行下一个任务,如果前一个任务消耗了很长时间,那下一个任务就只能一直等着。
于是
所有任务分为两种:1.同步任务。2.异步任务。
结果: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