首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏吴裕超

    浅析前端渲染与服务端渲染

    背景知识:   「后端渲染」指传统的 ASP、Java 或 PHP 的渲染机制;   「前端渲染」指使用 JS 来渲染页面大部分内容,代表是现在流行的 SPA 单页面应用;   「同构渲染」指前后端共用 即:服务端渲染,实际上也是需要客户端进行 再次地、但开销很小的二次渲染前端渲染的优势 局部刷新。无需每次都进行完整页面请求 懒加载。 还有静态站点的渲染,但这类应用本身复杂度低,很多前端框架已经能完全囊括。 耗时对比:   时间耗时比较:     1. 数据请求:由服务端请求数据而不是客户端请求数据,这是“快”的一个主要原因。 增加了前端的工作量,需要多维护node层。 解决方案:   一、前端和后端先行讨论对接,确定哪些是前端渲染哪些是后端渲染,确定字段,接口格式。    前端渲染的部分,又分为2种,   1、前端模板,vue、react去绑数据,实现方式为virtual Dom。   

    3.6K40发布于 2018-02-28
  • 来自专栏Super 前端

    前端优化--关键渲染路径

    通过优化关键渲染路径,我们可以显著缩短首次渲染页面的时间。 此外,了解关键渲染路径还可以为构建高性能交互式应用打下基础。 这样一来,就能尽快将内容渲染到屏幕上,此外还能缩短首次渲染后屏幕刷新的时间,即为交互式内容实现更高的刷新率。 构建对象模型 浏览器渲染页面前需要先构建 DOM 和 CSSOM 树。 渲染树构建、布局及绘制 CSSOM 树和 DOM 树合并成渲染树,然后用于计算每个可见元素的布局,并输出给绘制流程,将像素渲染到屏幕上。优化上述每一个步骤对实现最佳渲染性能至关重要。 我们该如何将两者合并,让浏览器在屏幕上渲染像素呢? DOM 树与 CSSOM 树合并后形成渲染树。 渲染树只包含渲染网页所需的节点(至关重要)。 布局计算每个对象的精确位置和大小。 最后一步是绘制,使用最终渲染树将像素渲染到屏幕上。

    1.6K41发布于 2019-08-14
  • 来自专栏被删的前端游乐场

    前端性能优化--渲染

    对于内容复杂和变更频繁的前端应用,页面渲染也常常是性能优化的核心场景。前面我有给大家整体地讲过《前端性能优化--方案归纳篇》,其实里面已经囊括了大多数场景下的一些性能优化的方向。 关于加载流程相关的优化,也有在《前端性能优化--加载流程篇》一文中进行详细的介绍。本文主要围绕页面渲染相关的内容,来进行性能优化分析。首屏渲染说到页面渲染,首屏的渲染显然是最首要的。 实际上,对于首屏内容的优化,前端开发在项目中更常用的点是骨架屏、数据分片/分屏加载、SSR DOM 直出渲染这几种,因为这几个优化点相对来说方向明确、效果明确、实现相对简单。 虽然现在大多数前端项目都离不开前端框架,也正因为这些框架本身已经做了很多的优化,所以我们常常会忘记和忽略掉这些注意事项。 结束语本文主要围绕页面渲染和更新的过程,介绍了一些性能优化的方向。其实如果你有注意到,就会发现本文的内容大多数还是基础和简单的前端知识点。

    87930编辑于 2024-01-18
  • 来自专栏技术客栈

    前端渲染优化有哪些?

    最好是通过 javascript动态给 iframe 添加 src 属性值, 这样可 绕开以上两个问题 禁止使用 gif 图片实现 loading 效果 ( 降低 CPU 消耗,提升渲染性能 避免文件跨域 修改及时生效 页面头部的 <style></style> <script></script> 会阻塞页面;( 因为 Renderer 进程中 JS 线程和渲染线程是互斥的 ) 页面中空的 href 和 src 会阻塞页面其他资源的加载 (阻塞下载进程) 网页 gzip , CDN 托管, data 缓存 , 图片服务器 前端模板 JS+数据,减少由于 HTML 标签导致的带宽浪费 , 前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数 用 innerHTML 代替 DOM 操作,减少 DOM 操作次数,优化 javascript 性能 当需要设置的样式很多时设置

    59510编辑于 2024-06-12
  • 来自专栏腾讯大讲堂的专栏

    前端技术】react渲染 - 流程概述

    作者:winkchen  腾讯IEG前端开发工程师 |导语 web前端技术中,有个叫做jsx的模板渲染语法,它是一个JavaScript 的语法扩展,目前逐渐被行业标准化(用的人多了...)。 实际上jsx 是来源于一个前端框架 react。在react中除了我们了解的jsx,那么jsx在react的渲染过程是哪个环节生效,以及渲染过程经历了哪些步骤。本文会基于这些点进行概述。 一.介绍前的建议 1.本文的react.render树状图.xmind,此为作者查看/调试react的渲染源码时做的结构笔记。

    React to Render

    , document.getElementById('root') ); ``` 这样就简单完成了页面的渲染。 七.渲染 渲染可以按照功能,切分为三个点 准备、执行、提交。

    1K10发布于 2020-12-29
  • 来自专栏前端技术地图

    现代前端框架的渲染模式

    这十年,前端渲染方式一直在演进,我觉得大概可以分为以下三个阶段: 传统 SSR: 那时候前端还没有分离,在 JSP、ASP、Ruby on Rails、Django 这些 MVC 框架下,通过模板来渲染页面 前端可以专注于 UI 的设计和交互逻辑。后端只需要提供 API,不需要关心前端的具体实现。 同构前端:这几年前端框架的发展进入的深水区,随着云原生、容器技术、Serverless、边缘计算等底层技术设施的普及,也让‘前端’生存范围延展到服务端。 前端开始寻求 UX 和 DX 的平衡点 通过这篇文章,你就可以知道近些年前端渲染模式的演变。 废话不多说,直接开始吧。 CSR - 客户端渲染 这个我们再熟悉不过了, 即前端页面在浏览器中渲染,服务端仅仅是静态资源服务器(比如 nginx)。

    1.2K31编辑于 2023-10-20
  • 来自专栏WebJ2EE

    前端】:浏览器渲染模式

    图1-1:浏览器渲染引擎族谱 ? 2. 浏览器如何决定用哪个模式 ? 浏览器使用文件开头的 DOCTYPE 来决定用怪异模式处理或标准模式处理。 <!DOCTYPE html> <! 3.1. document.compatMode document.compatMode 可以表明当前文档的渲染模式是混杂模式还是"标准模式".

    1.7K20发布于 2019-12-31
  • 来自专栏Super 前端

    前端优化--阻塞渲染的CSS

    默认情况下,CSS 被视为阻塞渲染的资源,这意味着浏览器将不会渲染任何已处理的内容,直至 CSSOM 构建完毕。请务必精简您的 CSS,尽快提供它,并利用媒体类型和查询来解除对渲染的阻塞。 在 渲染树构建(可查看上篇文章) 中,我们看到关键渲染路径要求我们同时具有 DOM 和 CSSOM 才能构建渲染树。这会给性能造成严重影响:HTML 和 CSS 都是阻塞渲染的资源。 HTML 显然是必需的,因为如果没有 DOM,我们就没有可渲染的内容,但 CSS 的必要性可能就不太明显。如果我们在 CSS 不阻塞渲染的情况下尝试渲染一个普通网页会怎样? 浏览器将阻塞渲染,直至 DOM 和 CSSOM 全都准备就绪。 CSS 是阻塞渲染的资源。需要将它尽早、尽快地下载到客户端,以便缩短首次渲染的时间。 根据网页加载时设备的方向,portrait.css 可能阻塞渲染,也可能不阻塞渲染。 最后一个声明只在打印网页时应用,因此网页首次在浏览器中加载时,它不会阻塞渲染

    1.2K21发布于 2020-05-28
  • 来自专栏bug收集

    前端: 如何渲染十万条数据

    面试常见问题: 如何渲染十万条数据 最直接的方法就是直接渲染出来,但是这样的做法肯定是不可取的,因为直接渲染太耗性能了。 提高渲染性能的解决方案有如下: 虚拟列表(也叫按需渲染或可视区域渲染) 时间分片 虚拟列表是最主流的解决方案,不渲染所有的数据,只渲染可视区域中的数据。 01 直接渲染 通过for 直接渲染,太消耗性能

      // 记录任务开始时间 let now = Date.now(); // 插入十万条数据 const 虚拟列表是对长列表渲染的一种优化,解决大量数据渲染时,造成的渲染性能瓶颈的问题。 03 时间分片 方法一:使用 setTimeout 页面的卡顿是由于同时渲染大量DOM所引起的,所以我们考虑将渲染过程分批进行,可以使用setTimeout来实现分批渲染 <ul id="container

      3.1K22编辑于 2022-07-22
    • 来自专栏冷环渊的全栈工程师历程

      前端资源浏览器渲染原理

      浏览器的渲染页面过程 HTML解析过程 一般情况下服务器会给浏览器返回 xx.html 文件 解析html 其实就是 Dom 树的构建过程 我们可以根据以下html 结构 来简单的分析出 html Render Tree的构建过程 Render Tree和DOM Tree并不是一一对应的关系,比如对于display为none的元素,压根不会出现在render tree中; 解析步骤 布局和绘制 渲染树 frame转为屏幕上实际的像素点; 包括将元素的可见部分进行绘制,比如文本、颜色、边框、阴影、替换元素(比如img) 渲染的流程可以参考下图 : 完成以上五步 成功在浏览器渲染出 对应的 xx.html 文件 回流和重绘 回流(reflow) reflow : 我们渲染出来的节点大小位置 也就是布局时第一次渲染出之后就确定的 之后对于节点大小和位置重新计算的行为 叫做回流(reflow) 回流在什么时候会出现 在渲染html的时候 js 没有继续构造DOM的能力 如果需要需要的部分 会先停止构建,下载js 执行脚本 把需要构建的东西构建完成后 继续执行构建 DOM 这么做有什么好处?

      79220编辑于 2023-02-26
    • 来自专栏黯羽轻扬

      图解 SSR 等 6 种前端渲染模式

      写在前面 React、Vue 等现代化前端框架的大旗之下,CSR(Client-Side Rendering)模式深入人心: CSR (Client-Side Rendering) – rendering 前端部分几乎全都是由客户端动态渲染(客户端执行 JS 代码,动态创建 DOM 结构)出来的,例如: <! : SSR(Server-Side Rendering):服务端渲染,在服务端将 Web 应用渲染成 HTML Rehydration:二次渲染,复用服务端渲染的 HTML DOM 结构和数据,在客户端 ,叫预渲染(Prerendering) Prerendering 主要区别在于,静态渲染得到的页面已经是可交互的,无需在客户端额外执行大量 JS 代码,而预渲染必须经客户端渲染才真正可交互: Static ) 对于二次渲染造成交互无法响应的问题,可能的优化方向是增量渲染(例如React Fiber),以及渐进式渲染/部分渲染 Trisomorphic Rendering 如果把Service Worker

      4.6K11发布于 2020-06-24
    • 来自专栏腾讯NEXT学位

      干货|前端同构渲染的思考与实践

      开篇 前端同构渲染的相关架构,给我最直观的感受,这是前端渲染最为复杂的一种方案,也是为了追求极致的用户体验不得不去做的一种尝试,虽然 Node.js 的引入赋能了传统前端领域、SEO 优化也不再是个问题 Node.js 的出现极大程度的给传统前端赋予了更大的能量,前端的分离也从前期的物理文件的区分转变为职责上的区分,前端开发者从页面仔的噩梦中解脱出来,最重要的是,JavaScript 能在服务器端执行了 再议首屏 让我们把视角移动的更细致一些,关注『从服务器端输出 HTML』这一部分,其隐藏的含义是我们需要把 App 渲染的所有 HTML 都输出给前端,其实不然,举个栗子: 比如在移动端有一个页面,它有大约 HTML 字符串做缓存策略,在缓存(一般选择 redis 等方案)之后,下次直接将同样的页面直接输出到前端,可大幅提高渲染性能。 SPA 架构,我们解决的是用户的使用效率,是前端的性能。

      1.8K40发布于 2020-04-26
    • 来自专栏FE32 Code

      边缘渲染是如何提升前端性能的?

      前端渲染的发展 在讲ESR(Edge Side Rendering,边缘渲染)如何提速渲染之前,我们有必要先了解一下前端渲染的发展历史以及前端各项性能指标优化是如何被提上议程的,之后我们再反观ESR的出现就会发现也是水到渠成 其实整个前端渲染方式也是随着前端技术的演进而不断革新的,大致可以分为如下历程。 SSR(Server Side Rendering)时代(JSP、PHP) 最早期的前端渲染(2005年Ajax推出之前)都是和后端混写的,比如JSP、PHP等写法。 CSR(Client Side Rendering)时代 后面有了Ajax技术之后,再加上通过CDN缓存静态资源之后,前端SPA + CSR渲染有了飞跃式的发展,这种模式前端处理所有逻辑、内容填充和路由 但是由于请求是全异步的,其一是对SEO不利,其二是需要HTML + JS处理数据拼接才能在前端完成渲染,其首屏白屏时间会较长,特别在一些低端机型上体验更是堪忧 SSR时代(Node) 再后来随着Node

      1.3K10编辑于 2022-10-27
    • 来自专栏前端小菜鸟

      前端监测浏览器渲染帧率fps

      前端性能优化中,尤其是动画绘制中,我们需要关注浏览器的渲染频率FPS(每秒传输帧数(Frames Per Second)),在Chrome浏览器上我们可以通过Performance 查看渲染Fps: [image] 在前端性能检测需求中,我们可以计算浏览器的渲染帧数。 实现思路 window.requestAnimationFrame()是我们写动画经常使用的方法,根据浏览器的的渲染频率绘制页面,减少不必要的计算和动画绘制过程,requestAnimationFrame

      3.6K20发布于 2020-05-21
    • 来自专栏Tecvan

      认识前端项目渲染模式们

      PS:我们是字节游戏中台前端团队,日常学习氛围浓厚,最近听说要 10-7-5 了,还有大量 HC,欢迎自荐。 一、啥是「啥是 XXR ?」? 前端研发中有许多常见场景,根据不同的构建、渲染过程有不同的优劣势和适用情况。 二、渲染模式——概念与对比 这里所说的 ✌ 渲染模式 ✌,包括: 页面 / 应用在开发完成之后的产物编译方式; 部署上线之后的服务形态; 资源存储与分发的方式; 用户访问时的启动与渲染过程; 这几方面不同的实现和规范 2.1 CSR for Client Side Rendering 顾名思义的“客户端渲染”,是当下用于渲染各类 UI 库构建的前端项目的最常见方案。 2.1.1 啥是 CSR? SSR 的概念,即与 CSR 相对地,在服务端完成大部分渲染工作,其实这就是一开始还没有如今的前端的时候,页面的呈现方式——服务器在响应站点访问请求的时候,就已经渲染好可供呈现的页面。

      2.2K20编辑于 2021-12-09
    • 来自专栏java一日一条

      前端高性能滚动 scroll 及页面渲染优化

      最近在研究页面渲染及web动画的性能问题,以及拜读《CSS SECRET》(CSS揭秘)这本大作。 本文主要想谈谈页面优化之滚动优化。 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的关系,节流与防抖,pointer-events:none 优化滚动。 说教了一堆废话,不喜欢的直接忽略哈,回到正题,要找到优化的入口就要知道问题出在哪里,对于页面优化而言,那么我们就要知道页面的渲染原理: 浏览器渲染原理我在我上一篇文章里也要详细的讲到,不过更多的是从动画渲染的角度去讲的 :【Web动画】CSS3 3D 行星运转 && 浏览器渲染原理 。 通过元素分组,当某个层的内容改变时,我们只需要更新该层的结构,并仅仅重绘和栅格化渲染层结构里变化的那一部分,而无需完全重绘。

      3K30发布于 2018-09-18
    • 来自专栏神光的编程秘籍

      手写简易前端框架:vdom 渲染和 jsx 编译

      作为前端工程师,前端框架几乎每天都要用到,需要好好掌握,而对某项技术的掌握程度可以根据是否能实现一个来判断。手写一个前端框架对更好的掌握它是很有帮助的事情。 一个完整的前端框架涉及到的内容还是比较多的,我们一步步的来,这篇文章来实现下 vdom 的渲染。 vdom 的渲染 vdom 全称 virtual dom,用来声明式的描述页面,现代前端框架很多都基于 vdom。前端框架负责把 vdom 转为对真实 dom 的增删改,也就是 vdom 的渲染前端框架就是通过这样的对象结构来描述界面的,然后把它渲染到 dom。 这样的对象结构怎么渲染呢? 明显要用递归,对不同的类型做不同的处理。 (jsx 的编译使用 babel,可以指定 render function 的名字) vdom 渲染和 jsx 是前端框架的基础,其他的功能比如组件是在这个基础之上实现的,下篇文章我们就来实现组件的渲染

      57520编辑于 2022-03-03
    • 来自专栏Candy 的修仙秘籍

      无界微前端是如何渲染子应用的?

      经过我们团队的调研,我们选择了无界作为微前端的技术栈。目前的使用效果非常好,不仅性能表现出色,而且使用体验也不错。 本文将重点探讨无界微前端如何渲染子应用的。 无界渲染子应用的步骤 无界与其他微前端框架(例如qiankun)的主要区别在于其独特的 JS 沙箱机制。 无界和 qiankun 都是以 HTML 为入口的微前端框架。 将 UI 渲染到 shadowRoot 我们先来看看现代的前端框架,是如何渲染 UI 的 以 Vue 为例,需要给 Vue 指定一个 DOM 作为挂载点,Vue 会将组件,挂载到该 DOM 上 import 目前主流的微前端框架多多少少多会有些问题,目前还没有一种非常完美的方法实现微前端

      2.1K30编辑于 2023-06-18
    • 来自专栏Candy 的修仙秘籍

      无界微前端是如何渲染子应用的?

      本文将重点探讨无界微前端如何渲染子应用的。无界渲染子应用的步骤无界与其他微前端框架(例如qiankun)的主要区别在于其独特的 JS 沙箱机制。 无界和 qiankun 都是以 HTML 为入口的微前端框架。 将 UI 渲染到 shadowRoot我们先来看看现代的前端框架,是如何渲染 UI 的以 Vue 为例,需要给 Vue 指定一个 DOM 作为挂载点,Vue 会将组件,挂载到该 DOM 上import ,并挂载 HTML运行 JS 渲染 UI最后介绍了无界是处理副作用的一些细节。 目前主流的微前端框架多多少少多会有些问题,目前还没有一种非常完美的方法实现微前端。即使是经历过长时间迭代的 qiankun,其设计上也有问题,因此还配有一个常见问题的页面,给开发者提供帮助去避免问题。

      6.4K30编辑于 2023-03-29
    • 来自专栏软件开发

      前端MVC Vue2学习总结(四)——条件渲染、列表渲染、事件处理器

      一、条件渲染 1.1、v-if 在字符串模板中,如 Handlebars ,我们得像这样写一个条件块: <! 此时我们可以把一个 <template> 元素当做包装元素,并在上面使用 v-if,最终的渲染结果不会包含它。 1.1.4、用 key 管理可复用的元素 Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。这么做除了使 Vue 变得非常快之外,还有其它一些好处。 官方文档: http://vuejs.org/guide/conditional.html 二、列表渲染 2.1、v-for 我们用 v-for 指令根据一组数组的选项列表进行渲染。  如果原数组发生了变化则View也会重新渲染,如果原数组未发生变化只是读取后返回了新的数组对象则不会渲染

      3.7K110发布于 2018-03-30
    • 领券