传统的DOM渲染方式?

1.什么是DOM渲染?

  DOM渲染指的是对于浏览器中展现给用户的DOM文档的生成的过程。

2.DOM渲染的演化过程,大致可以分为可以分为三个阶段:

  • 纯后端渲染:

    •   DOM树的生成完全是在后端服务器中完成的,后端服务器的程序会把需要的数据拼合成一个类似于前端DOM节点组成的DOM树,并转化成字节流作为HTTP Response的body返回浏览器
  • 纯前端渲染:
    •   前端渲染把DOM生成的主体逻辑都放在前端,后端之后返回一个框架的DOM结构,然后由js代码把页面的主题渲染到框架中。可以解决后端渲染中出现的各种体验问题。
  • 服务端的js渲染结合前端渲染:
    •   主要是把前两个阶段中,一些交给纯后端DOM渲染逻辑分离的不好,但是交给纯前端DOM渲染又会造成较高延迟的部分单独分离出来形成了一独立DOM渲染阶段,保留的代码中天然的展示层和数据层的分离,又把API请求的累计延迟减少了很多,从SEO角度来说渲染结果对搜索引擎也很友好。当然,这样的做法需要给整体的架构增加一个独立的单元,给开发和部署都带来了更高复杂性。

(1).纯后端渲染:采用这样的渲染方式,就是每一个页面中,在Chrome中展开得到的DOM,和服务器返回的DOM是基本一致的(可以通过查看网页源代码来得到服务器返回的DOM)。当然,这里是“基本”一致,因为实际操作中,页面或多或少还是会带有一些js代码,并且在浏览器端中运行这些js代码来对DOM进行的渲染,不过这一部分js代码并不影响DOM的主体是由服务端返回的。纯后端的DOM渲染,DOM树的生成完全是在后端服务器中完成的,相当于后端服务器的程序会把各种的数据拼成一个DOM树,并转换成一个字节流作为HTTP Response的body返回给浏览器。

(2)纯前端渲染:纯前端渲染可以解决纯后端渲染中出现的各种体验问题。纯前端渲染把DOM生成的主题逻辑都放在了前端,这时后端只会返回一个框架的DOM结构,比如只带一个容器元素的的DOM,然后由js代码把页面的主题渲染到这个容器元素中。

(3)服务端的js渲染结合前端渲染:目前是最适于提供最优的使用体验,但不一定开发中最好的方式,在不同的地方,根据不同的方法来解决。

浏览器会解析三个东西:

(1)一个是HTML/SVG/XHTML,事实上,Webkit有三个C++的类对应这三类文档。解析这三种文件会产生一个DOM Tree。
CSS,解析CSS会产生CSS规则树。
Javascript,脚本,主要是通过DOM API和CSSOM API来操作DOM Tree和CSS Rule Tree.
 (2)解析完成后,浏览器引擎会通过DOM Tree 和 CSS Rule Tree 来构造 Rendering Tree。注意:
Rendering Tree 渲染树并不等同于DOM树,因为一些像Header或display:none的东西就没必要放在渲染树中了。
CSS 的 Rule Tree主要是为了完成匹配并把CSS Rule附加上Rendering Tree上的每个Element。也就是DOM结点。也就是所谓的Frame。
然后,计算每个Frame(也就是每个Element)的位置,这又叫layout和reflow过程。
 (3)最后通过调用操作系统Native GUI的API绘制。

原文地址:https://www.cnblogs.com/yj199661/p/11198253.html

时间: 2024-10-11 09:36:56

传统的DOM渲染方式?的相关文章

传统的DOM是如何进行渲染的

在这篇文章里,DOM的渲染指的是对于浏览器中展现给用户的DOM文档的生成的过程.在Chrome中,这个渲染好的DOM,就是在开发者工具中元素这个tab中,递归的展开之后得到的整个文档. DOM渲染的演化过程,大致可以分为可以分为三个阶段: 纯后端渲染 纯前端渲染 服务端的js渲染结合前端渲染 下面我们分阶段来做一下说明. 第一个阶段是纯后端渲染.采用这样的渲染方式,就是每一个页面中,在Chrome中展开得到的DOM,和服务器返回的DOM是基本一致的(可以通过查看网页源代码来得到服务器返回的DOM

传统的DOM是如何进行渲染的?以及单页面开发与多页面开发的优缺点。

分为三种:纯后端渲染,纯前端渲染,服务端的js渲染结合前端渲染. 纯后端渲染 纯后端的DOM渲染,DOM树的生成完全是在后端服务器中完成的,相当于后端服务器的程序会把各种的数据拼成一个DOM树,并转换成一个字节流作为HTTP Response的body返回给浏览器. 纯前端渲染 纯前端渲染可以解决纯后端渲染中出现的各种体验问题.纯前端渲染把DOM生成的主题逻辑都放在了前端,这时后端只会返回一个框架的DOM结构,比如只带一个容器元素的的DOM,然后由js代码把页面的主题渲染到这个容器元素中. 服务

前端之:传统的DOM是如何渲染的?

a.纯后端渲染:页面发送请求,后端服务器中将数据拼成完整DOM树,并转换成一个字节流作为HTTP Response的body返回给浏览器.优点在于 返回的HTTP Response是包含着全部页面内容,可以让用户更加快捷的看到页面的主体部分.也方便了网站的seo(搜索引擎优 化). b.纯前端渲染 能够分离表现层和数据层,js代码负责交互展现,后端以API(应用程序接口)形式提供纯粹的数据.优点是交互的部分可以 脱离数据接口独立的进行开发和调试,使得站点的交互能力大幅度提升. c.服务端的js渲

模版+数据分离渲染方式的设计与实现

一 背景 1 现状 模版存放于后端 php输出页面html结构进行页面渲染 ajax请求,需要重渲结构时,php输出html结构 builder制作静态页面结构 jser完成页面交互逻辑开发 2 不足 模版数据无法存储本地,导致每次打开页面请求数据量巨大 数据每次要从接入层web服务器读取,没有合理利用CDN加速静态模版内容 联调成本较大,不利于前端控制页面展示和交互开发 3 解决方案 后端直接输出json数据 试图把渲染页面的模版存放在前端 4 技术路线 5 理论意义 利用CDN保存html模

前端模板与渲染方式

1 页面级的渲染 再刚有web的时候,前端与后端的交互,非常直白,浏览器端发出URL,后端返回一张拼好了的HTML串.浏览器对其进行渲染.html中可能会混有一些php(或者php中混有一些html).在服务端将数据与模板进行拼装,生成要返回浏览器端的html串. 这与我们现在做一个普通网页没什么区别.只不过现在,我们更常使用模板技术来解决前后端耦合的问题. 前端使用模板引擎,在html中写一些标签,与数据与逻辑基本无关.后端在渲染的时候,解析这些标签,生成HTML串,如smarty.其实前端与

vue渲染方式:render和template的区别

template----html的方式做渲染 render----js的方式做渲染 render(提供)是一种编译方式 render里有一个函数h,这个h的作用是将单文件组件进行虚拟DOM的创建,然后再通过render进行解析. h就是createElement()方法:createElement(标签名称,属性配置,children) template也是一种编译方式,但是template最终还是要通过render的方式再次进行编译. 区别: 1.render渲染方式可以让我们将js发挥到极致

opengl 渲染方式在屏 离屏 CPU

一.概念理解 OpenGL中,GPU屏幕渲染有以下两种方式: On-Screen Rendering 意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行. Off-Screen Rendering 意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作. 二.离屏渲染的是是非非 相比于当前屏幕渲染,离屏渲染的代价是很高的,主要体现在两个方面: 创建新缓冲区 要想进行离屏渲染,首先要创建一个新的缓冲区. 上下文切换 离屏渲染的整个过程,需要多次切换上下文

QML的渲染方式相较于之前的版本也有了重大的更新(CPU线程负责绘制,GPU线程负责渲染),还有好多经常评论 good

作者:qyvlik链接:http://www.zhihu.com/question/38867614/answer/78583440来源:知乎著作权归作者所有,转载请联系作者获得授权. 做UI啊.如果是桌面应用,QML可以更快速.如果是手机UI,H5绝对占优. 毕竟Qt提供的那一套控件库更适合桌面应用,而当年诺基亚都开发了塞班和米果的QML手机控件库,现在Ubuntu,旗鱼,黑莓都有自己的QML手机控件库. 渲染性能上.QML有绝对统一的接口规范以及渲染机制.(跨平台是这样的). H5桌面系统一

用java操作XML文件(DOM解析方式)

XML 可扩展标记语言(Extensible Markup Language),是独立于软件和硬件的传输工具. XML的作用: (1)用作配置文件 (2)简化数据共享 (3)简化数据传输 XML DOM解析方式 在java工程中导入dom4j.jar包. (一)用java读XML文件 <1>创建SAXReader对象. RAXReader reader=new RAXReader(); <2>调用RAXReader的Document read(File file)方法,获取xml文