客户端容器
用户按下回车,UI线程通知网络线程发起一个请求,请求过程中tab一直处于加载状态
网络线程接到HTTP响应后先检查响应头的媒体类型 MIME Type
如果响应主体是一个html就渲染,如果是其他类型文件就下载
网络线程检查完后,告知主进程数据准备完毕,然后准备渲染
主进程通过IPC消息告诉渲染进程去处理本次导航,渲染进程开始接受数据并告知主进程自己已经开始处理,导航结束,进入文档加载阶段
渲染:
先构建DOM树,将html转化为浏览器能理解的结构
再构建CSSOM树,将css转化为浏览器能理解的CSSOM
构建渲染树,就是DOM树和CSSOM树的结合
根据渲染树计算每个节点位置和大小
在浏览器页面区域绘制元素边框
遍历渲染树,将元素以盒模型的形式写入文档流
首屏优化:
构建的时候,借助工具将代码压缩,删除无用代码。
单页应用,代码分包,分包可以利用浏览器并行能力。
静态资源分离。
JS脚本非阻塞加载。js引擎和gui渲染互斥。
合理使用缓存策略。使用打包工具。
SSR服务器端渲染
预置loading
Web Worker 是一种 JavaScript API,它允许在主线程之外创建多个独立的执行上下文(线程),以便在后台运行代码,而不会阻塞主线程的运行。这使得 Web 应用程序可以更加响应迅速,同时能够进行复杂的计算和操作。
Shadow DOM(Shadow Document Object Model)是一种 Web 标准技术,它允许开发者创建独立的、隔离的 DOM 子树,以便在一个 HTML 文档内部创建组件化的界面,避免 CSS 样式和 JavaScript 代码的冲突,从而提高代码的可维护性和可重用性。
Shadow DOM 实际上是一个可包含自己的 HTML、CSS 和 JavaScript 的完全独立的 DOM 子树,它可以嵌套在主 DOM 树中,而不会与主 DOM 树中的元素产生任何干扰。