【Render】如何将数据渲染到页面?渲染数据的流程

简介: 【Render】如何将数据渲染到页面?渲染数据的流程

之前我们了解了什么是渲染

即:将我们想要表达的东西表达出去,就是渲染。表达后,呈现出来我们想表达的东西,叫渲染成功。
今天研究一下渲染的机制,到底浏览器是怎么进行渲染的?

我们知道HTML与 JavaScript 和 CSS 共同构成了我们所看到的网页,其中:


HTML 用来定义网页的内容,例如标题、正文、图像等;

CSS 用来控制网页的外观,例如颜色、字体、背景等;

JavaScript 用来实时更新网页中的内容,例如从服务器获取数据并更新到网页中,修改某些标签的样式或其中的内容等,可以让网页更加生动。

生动的说:html制造了一个人,css给一个人穿了衣服,可这时候这个人还不会动,是“植物人”。JavaScript让这个人就有了动作,这个人就是一个完整的人了。

所以学会JavaScript,首先要干的事情就是搞明白渲染的逻辑。不然写一堆数据不知道怎么渲染,浏览器中没有任何显示,还经常报错,会让学习的人没有心情,没有动力,甚至止步于此。


我们简单的做一个换位思考:如果我们自己是浏览器,现在接收到了一个html文件,我们应该怎么样去解析,执行?

浏览器在做这件事的时候,是有自己的逻辑和顺序的。


1.首先,下载并打开这个html文件,从第一行开始解析html中的代码。


2.浏览器在解析HTML的过程中,如果发现 HTML 文本里面有一些外部的资源链接,比如 CSS、JS ,图片和Canvas画布等,会立即启用别的线程下载这些静态资源。


3.在 head 中遇到 JS 文件时,HTML 的解析会停 下来,等 JS 文件下载结束并且执行完,HTML 的解析工作再接着来,防止 JS 修改已经完成的解析结果。


4.接着,创建DOM树。什么是DOM树?DOM 的全称是:文档对象模型(Document Object Model),在 HTML 解析时,浏览器自带的解析器会把解析完的 HTML转化成 DOM 对象,再进一步构建 DOM 树。


5.当 CSS 下载完,CSS 解析器就开始对 CSS 进行解析,把 CSS 解析成 CSS 对象,然后把这些 CSS 对象组装成一颗 CSSOM 树。


6.当DOM 树和 CSSOM 树都构建完成以后,浏览器会根据这两棵树构建出一棵渲染树。


7.紧接着,就到了渲染树构建完成之后。这个时候所有元素的位置关系和需要应用的样式就确定了。这时候浏览器会计算出所有元素的大小,尺寸,位置,以及各种样式。


8.布局计算完成以后,浏览器就可以在页面上渲染元素了,经过渲染引擎的处理后,整个页面就显示在了屏幕上。


有人会问,如果我css文件引入到html时,写错了,没有成功引入,浏览器解析器咋办?


很简单,如果出现这种情况,浏览器没找到css文件,就不会识别,解析器反而省事了。


相关文章
|
前端开发 JavaScript 安全
【面试题】路由的两种模式:hash模式和 history模式
【面试题】路由的两种模式:hash模式和 history模式
482 1
|
Oracle Cloud Native 关系型数据库
Oracle Linux 10 - Oracle 提供支持 RHEL 兼容发行版
Oracle Linux 10 - Oracle 提供支持 RHEL 兼容发行版
489 11
Oracle Linux 10 - Oracle 提供支持 RHEL 兼容发行版
|
运维 虚拟化 Windows
Hyper-V Win8虚拟机启动错误修复教程
针对Hyper-V Win8虚拟机启动错误,本教程提供详细修复步骤。首先进行硬件兼容性检查,确保CPU支持虚拟化并启用,同时检查内存和存储空间是否充足。接着以管理员身份登录,使用事件查看器排查错误。管理Hyper-V服务,确保相关服务正常运行。检查虚拟机状态,优化资源分配,并修复虚拟硬盘文件。更新系统和重装Hyper-V组件也是有效手段。最后,排查硬件故障、备份数据及处理第三方软件冲突。通过这些步骤,多数启动问题可得到解决。
1026 65
|
关系型数据库 MySQL 数据库
MySQL中find_in_set函数的使用
1.语法 FIND_IN_SET(str,strlist) (1)str 要查询的字符串 (2)strlist 字段名; 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回
1441 0
MySQL中find_in_set函数的使用
|
前端开发 JavaScript API
深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径
深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径
1370 4
|
Java 数据库连接 开发者
Java中的异常处理:从新手到专家
在Java编程的世界中,异常处理是每位开发者必须精通的技能。本文将引导您了解Java异常处理的基础知识,深入探讨高级技巧,并分享最佳实践,帮助您从初学者成长为熟练处理各种异常情况的专家。
165 33
|
网络协议 前端开发 JavaScript
WebSocket 教程汇总指南,从入门到熟练
本文将带你从零开始,逐步掌握 WebSocket 的基本概念、实现方法和应用场景,通过一系列详细的教程和实践案例,帮助你从入门到熟练地使用 WebSocket 技术。无论你是初学者还是有一定经验的开发者,本文都能为你提供有价值的信息和指导。
|
JavaScript
Vue 的父组件和子组件生命周期钩子执行顺序
在 Vue 中,父组件和子组件的生命周期钩子执行顺序如下:
|
机器学习/深度学习 存储 人工智能
【ACL2024】阿里云人工智能平台PAI多篇论文入选ACL2024
近期,阿里云人工智能平台PAI的多篇论文在ACL2024上入选。论文成果是阿里云与阿里集团安全部、华南理工大学金连文教授团队、华东师范大学何晓丰教授团队共同研发。ACL(国际计算语言学年会)是人工智能自然语言处理领域的顶级国际会议,聚焦于自然语言处理技术在各个应用场景的学术研究。该会议曾推动了预训练语言模型、文本挖掘、对话系统、机器翻译等自然语言处理领域的核心创新,在学术和工业界都有巨大的影响力。此次入选标志着阿里云人工智能平台PAI在自然语言处理和多模态算法、算法框架能力方面研究获得了学术界认可。
|
JavaScript 前端开发
typeScript基础(8)_ts类型断言
本文介绍了TypeScript中的类型断言,它用于在编译时告诉TypeScript某个对象具有特定的类型,即使它看起来不具备。类型断言可以用来访问一个类型上存在而另一个类型上不存在的属性或方法。需要注意的是,类型断言并不会在运行时改变JavaScript的行为,因此如果断言不当,运行时仍然可能出错。文章还提醒避免将类型断言为`any`类型或进行多重断言。
319 2

热门文章

最新文章