1. 浏览器主要构成

浏览器是由c++编写的一款客户端软件。

作为互联网的直接体现,它的主要结构为:

  • 用户界面:包括地址栏、后退/前进按钮、书签目录、刷新按钮等。也就是除了显示请求内+容的主窗口之外的部分。
  • 浏览器引擎:用来查询和操作渲染引擎的接口。
  • 渲染引擎(呈现引擎):用来处理资源内容,并显示处理结果,也就是我们所说的内核。
  • 网络:完成网络调用。
  • UI后端 : 底层使用操作系统的用户接口,具有不特定平台的通用接口。
  • JS解析器 : 解释执行JS脚本。
  • 数据存储 :占用一定的硬盘实现数据的存储。

组成结构示意图

2. 主要浏览器和内核对应关系

浏览器名称 渲染引擎(内核) ECMAScript引擎(JS引擎)
IE6-8 Trident JScript(ie3-8)、Chakra(ie9)
Firefox 3.5+ Gecko TraceMonkey
Chrome4+ WebKit V8
Safari4+ WebKit SquirrelFish Extreme
Opera10+ Presto Carakan

3. 浏览器静态资源下载

当在地址栏输入网址(URL地址)后,浏览器会解析URL 地址进行 DNS(域名系统) 域名解获得IP地址,然后TCP 连接(三次握手), 浏览器向 web 服务器发送一个 HTTP 请求报文,服务器返回 HTTP 响应报文给客户端,关闭 TCP 连接(四次挥手),浏览器解析文档资源通过浏览器内核渲染页面。在浏览器解析文档的时候下载静态资源。

4. 内核引擎解析

谷歌内核渲染器工作流程

HTML 通过 HTML Paeser 转化成一个DOM树

style 通过 CSS Parser 转化为一个 style Rules (css 规则)

DOM树和css规则 通过 Arrachment(附加) 到一起 形成 Render Tree (渲染树)

渲染树 通过Layout 布局引擎布局 ,然后通过 Painting 渲染出来

谷歌Js引擎:v8

为什么我们需要Js引擎呢?

  • 高级的编程语言都需要转化成最终的机器语言来执行的
  • Javascript无论交给浏览器还是node,最终都是被CPU执行
  • CPU只认识自己的指令集,也就是机器语言,才能被CPU执行
  • 所以我需要Javascript引擎帮助我们讲Javascript翻译成CPU指令

解析流程

  • Javascript源代码通过Parse词法分析语法分析转化为AST抽象语法树
  • AST语法树通过Ignition转化为字节码,再根据不同的电脑的cpu架构翻译成汇编指令和机器指令
  • TurboFan 从Ignition中得到使用频率高的信息,直接转化为机器码提高运行效率
  • 当优化的机器码发现我们的需要的指令在Turbofan有错误时,会重新翻译成字节码运行

5. 简单流程

当我们从浏览器地址栏中输入一个域名地址,触发网络请求,网络层得到响应以后,渲染引擎会从网络层中获取请求回来的文档内容,内容大小有一定限制。渲染引擎开始解析请求回来的资源,最后把解析之后的内容结合UI后台,通过调用操作系统的api绘制我们的主要内容,此时操作系统的api则会根据硬件的不同绘制出不同的效果。

一.浏览器和V8引擎相关推荐

  1. 浏览器原理-v8引擎-js执行原理

    浏览器原理-v8引擎-js执行原理 js简介 js应用: js的应用很广泛 可以应用于web,移动端,小程序,桌面应用,后端开发等 web开发包括(原生js,react,vue,angular等) 移 ...

  2. Chrome浏览器及V8引擎概要

    背景 2020年在eBay大数据团队做可视化项目时,除了后端的spark和java,还需要负责前端数据可视化页面的定制,这就需要前端知识了,包括但不限于:webpack.chrome.js引擎.那时候 ...

  3. 影响 Chrome、Edge 等浏览器的 V8 引擎0day

     聚焦源代码安全,网罗国内外最新资讯! 印度研究员 Rajvardhan Agarwal 在推特放出一个 RCE 0day 漏洞,影响 Google Chrome.Microsoft Edge 以及及 ...

  4. 干货:浏览器渲染引擎Webkit和V8引擎工作原理

    浏览器的历史 W3C在80年代后期90年代初期发明了世界上第一个浏览器WorldWideWeb(后更名为Nexus),支持文本/简单的样式表/电影/声音和图片 1993年,网景(netscape)浏览 ...

  5. 浏览器执行原理、V8引擎

    前言 对一个前端而言,思考JS在浏览器中如何被执行非常重要.笔者是通过codewhy的课程进行学习的,首先感谢codewhy. 浏览器的功能 浏览器的主要功能就是向服务器发出请求,在浏览器窗口中展示您 ...

  6. 浏览器工作原理和V8引擎

    一.浏览器的工作原理 比如在浏览器中输入网址,然后dns进行解析,解析出的就是服务器的一个ip地址.服务器返回一个html文件,浏览器内核在解析html文件的过程中,遇到link标签和script标签 ...

  7. 浏览器执行原理-V8引擎

    浏览器内核 不同浏览器的内核组成 Gecko:早起被Netscape和Mozilla Firefox浏览器使用 Trident:微软开发,被IE4-IE11浏览器器使用,但在Edge已经转向Blink ...

  8. 深入浅出JS—01 V8引擎与浏览器内核

    前言 先说几句 基础不牢,地动山摇.切忌JS没学好就盲目搞一些框架,追一些潮流,纯属舍本逐末. JS写起来容易,掌握很难.之前贪快,潦潦草草的看书看视频写代码,以为自己会了,其实并不知其所以然,现在又 ...

  9. JavaScript工作原理(二):V8引擎和5招高效代码

    本系列的第一篇文章重点介绍了引擎,运行时和调用栈的概述.第二篇文章将深入V8的JavaScript引擎的内部.我们还会提供一些关于如何编写更好的JavaScript代码的技巧. 概述 JavaScri ...

最新文章

  1. 远程桌面怎么持续连接_如何拥有成功且可持续的远程产品管理职业
  2. java和jdbc对应关系,JDBC类型与JAVA类型对应关系
  3. 第25节 典型应用集成技术
  4. 计算两个日期相差的天数
  5. 再有人问你synchronized是什么,就把这篇文章发给他。
  6. bzoj 1079 [SCOI2008]着色方案
  7. 手把手教你报表工具PentahoBI安装和简单使用
  8. 服务器选购seo优化规则,网站seo优化注意事项1—域名和服务器选择
  9. 截取地址栏URL参数
  10. Android辅助开发工具说明
  11. 第二天matplotlib绘图
  12. aspnet实现搜索查询_C#算法设计查找篇之01-顺序查找
  13. 七、WGS84 UTM
  14. UVa 815 - Flooded!
  15. JavaWeb项目打包运行
  16. 全国各主要省市经纬度
  17. PDF文件如何旋转后保存
  18. 蓝桥杯练习系统特殊回文数(python)
  19. PAT Deepest Root
  20. html如何删除网页边框,如何从HTML表中完全删除边框

热门文章

  1. 如何在移动端app中应用字体图标icon fonts
  2. 【机器学习】建议收藏的 725 个机器学习术语表,太全了!
  3. 全球及中国自主可控行业发展前景策略及投资机会分析报告2021-2027年
  4. ubuntu截图工具ksnapshot安装
  5. Python爬虫实战 | (14) 爬取人民网滚动新闻
  6. 圆周率计算法公式算法(圆周率公式算法)
  7. Python学习之路(七)合并单元格解决自动换行,利用replace()
  8. 计算机毕业设计springboot+vue+elementUI智慧养老平台
  9. windows admin center
  10. 很好用的电脑桌面远程控制软件 支持多平台 Win,Mac,Debian… 等操作系统 Anydesk...