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

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

    背景知识:   「后端渲染」指传统的 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.7K41发布于 2019-08-14
  • 来自专栏被删的前端游乐场

    前端性能优化--渲染

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

    90430编辑于 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 性能 当需要设置的样式很多时设置

    60710编辑于 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 这么做有什么好处?

      79420编辑于 2023-02-26
    • 来自专栏前端干货和生活感悟

      前端小知识11

      ,'2019-02-01','month') //["2018-05", "2018-06", "2018-07", "2018-08", "2018-09", "2018-10", "2018-11 ", "2018-12", "2019-01", "2019-02"] 3、moment.js当日期为周日时,获取所在周的周日,出现的bug let date='2019-08-11' //获取该日期所在的周几 = moment(date) .week(+end_weeknumber) .isoWeekday(7) .format('YYYY-MM-DD') //'2019-08-11 ' 特别特别需要注意的就是,当所选日期是周日的时候,获取所在的周数是需要加 1 的 配合 前端小知识10点(2019.9.29) 的第一点使用: 完美版: let date='2019-08-11' },100) }, 这个知识在自己的项目里还是挺有用的,一个是拖拽,另一个是鼠标滚轮滚动里也用到过 10、获取网页缩放比例 window.devicePixelRatio 11

      1.2K30发布于 2019-12-16
    • 来自专栏腾讯NEXT学位

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

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

      1.8K40发布于 2020-04-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
    • 来自专栏前端小菜鸟

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

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

      3.6K20发布于 2020-05-21
    • 来自专栏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
    • 来自专栏前端精读评论

      11. 精读《前端调试技巧》

      讨论地址是:精读《前端调试技巧》 · Issue #17 · dt-fe/weekly

      1.2K40编辑于 2022-03-14
    • 来自专栏Python 学习

      前端-part11-Bootstrap初识

      2.Bookstrap...复制粘贴...复制粘贴...link导入bookstrap.css,分分列,然后往里面贴

      65120发布于 2019-09-02
    • 来自专栏大侠之运维

      前端复刻win11系统

      计算机网络知识文章链接:https://cloud.tencent.com/developer/article/2474032 本篇文章主要介绍了计算机网络知识最近看到一个不错的开源项目,作者用react复刻了一个win11 如果你想去体验下,作者提供了一个的demo环境,地址如下:https://win11.blueedge.me/而如果你想自己启动一个这样的项目的话,最快捷的方式是通过docker启动,方式如下:docker run -d --restart unless-stopped --name win11react -p 3000:3000 blueedge/win11react:latest当然了,如果你熟悉一些自动化在线部署平台如 前面也提到了,它不是一个操作系统,也和microsoft没有任何关系,作者写这个项目用了不到10天,真正写代码仅用了6天如果你是前端开发者,或者在学习react,那么这个项目可以作为一个不错的练手项目。

      46300编辑于 2024-12-06
    • 来自专栏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
    • 来自专栏编程之路的专栏

      (译)SDL编程入门(11)裁剪渲染和精灵表

      裁剪渲染和精灵表 有时你只想渲染纹理的一部分。很多时候,游戏喜欢将多个图像保留在同一张精灵表上,而不是拥有一堆纹理。使用剪辑渲染,我们可以定义要渲染的纹理的一部分,而不是渲染整个对象。 渲染函数现在接受一个矩形,定义我们要渲染纹理的哪一部分。我们给它一个默认参数NULL,以防我们想渲染整个纹理。 gSpriteSheetTexture.loadFromFile( "11_clip_rendering_and_sprite_sheets/dots.png" ) ) { printf 参考资料 [1] 这里: http://www.lazyfoo.net/tutorials/SDL/11_clip_rendering_and_sprite_sheets/11_clip_rendering_and_sprite_sheets.zip [2] 原文链接: http://www.lazyfoo.net/tutorials/SDL/11_clip_rendering_and_sprite_sheets/index.php

      1.1K30发布于 2020-10-09
    • 领券