写在前面
主要了解多线程架构,渲染进程任务,渲染进程任务
浏览器结构演进
- 单进程架构:所有模块运行在同一个进程里,包含网络、插件、JavaScript运行环境等
- 多进程架构:主进程、网络进程、渲染进程、GPU进程、插件进程。这种架构可以提高稳定性和安全性,因为一个标签页崩溃了不会影响其他标签页的运行。 3.面向服务架构:将原来的UlI、数据库、文件、设备、网络等,作为一个独立的基础服务
js引擎
- 解析器:将JavaScript代码解析为可执行的指令。
- 编译器:将JavaScript代码转换为机器代码,以提高执行速度。
- 内存管理:跟踪变量和对象的使用,并在不再需要它们时释放内存。
- 执行器:执行JavaScript代码并将结果返回给用户。
- 优化器:优化代码以提高执行速度和性能。
- 调试器:帮助开发人员查找和修复代码中的错误。
- 异步处理:通过提供异步函数和回调函数来处理异步任务,从而提高性能和响应能力。
- JIT编译器:在代码执行时动态编译代码,以提高执行速度。
多线程的工作流程
- 网络线程负责加载网页资源
- JS引擎解析JS脚本并且执行
- JS解析引擎空闲时,渲染线程立即工作
- 用户交互、定时器操作等产生回调函数 放入任务队列中
- 事件线程进行事件循环,将队列里的任 务取出交给JS引擎执行
跨端容器
跨端容器-通用原理
- UI组件
- 渲染引擎
- 逻辑控制引擎
- 通信桥梁
- 底层API抹平表现差异
chrome运行原理
- 输入处理
- 开始导航
- 读取响应
- 寻找渲染进程
寻找渲染进程 ·资源加载 建构渲染树 页面布局 页面绘制
- 解析 HTML 和 CSS:渲染进程需要将网页的 HTML 和 CSS 解析成浏览器可以理解的内部数据结构,例如 DOM 和 CSSOM。
- 构建渲染树:渲染进程会根据 DOM 和 CSSOM 构建出渲染树,该树包含了网页的可视化元素和样式信息。
- 布局和绘制:根据渲染树中的元素信息,渲染进程需要对页面进行布局和绘制,生成最终的像素图像。
- 处理用户输入和交互:渲染进程需要负责处理用户的输入事件(点击、滚动,并且根据用户的操作更新渲染树和渲染结果。
- 执行 JavaScript:渲染进程还需要执行页面中的 JavaScript 代码,如响应用户事件、更新网页内容等。