JS:浏览器架构和事件循环(*****高阶五颗星)
1.早期浏览器
早期浏览器是单进程程序和多线程进程(页面线程(负责解析js,plugin执行,draw),网络线程(request)、其他线程(file,storage)等)
产生的问题?
- 页面线程效率低:因为js的执行,插件执行,页面解析和渲染都运行在该线程里
- 页面不稳定:一个线程崩溃,整个浏览器
2.现代浏览器架构
1.多进程的浏览器
1.主进程:
- 浏览器界面
- 用户交互
- 管理子进程
- 提供存储功能
2.网络进程
负责网络资源的请求和接受。
3.GPU进程
驱动chrome利用GPU的最初的动力是3D CSS,对页面渲染的加速
4.插件进程
讲插件分成单独的进程,防止插件造成的页面崩溃或者不安全的问题,形成一个沙箱模式,因为插件是不安全的,可能会导致浏览器崩溃。
沙箱模式:
SANDBOX(沙箱)是指一种技术,在这种技术中,软件运行在操作系统受限制的环境中。这样比较安全。
5.渲染进程(内核)
渲染进程是多线程的进程,也是运行在沙箱环境中的,因为网页是不安全的,会可能注入一些不安全的代码,为了确保这个页面的安全。渲染进程的核心是渲染引擎和js解析引擎。渲染引擎和js解析引擎都在渲染进程的主线程中,所以两个是不能同时进行的。
不同内核的浏览器:
- WEBKIT 内核:SAFARI / CHROME 等
- GECKO 内核 :NETSCAPE6 及以上版本 / FIREFOX / MOZILLASUITE /SEAMONKEY 等
- TRIDENT( MSHTML)内核 : IE9- / MAXTHON / TT / THE WORLD / 360搜狗浏览器 / 腾讯浏览器等
- PRESTO 内核:
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
前端面试题 文章被收录于专栏
前端面试的一些常问问题、问题的具体实现(可直接运行)以及底层原理