现代前端框架的渲染模式

前端渲染方案:边缘渲染 前端渲染的发展历史 整个发展历史大致可以分为: 1. SSR(Server Side Rendering)(JSP、PHP) 2005 年 Ajax 推出之前,前后端是混写的,比如JSP、PHP等写法。如此,开发效率低下,容易前后端耦合,维护成本高。 2. CSR(Client Side Rendering)(Ajax、CDN,SPA) CSR 前后端分离开发,前端处理所有逻辑、内容填充和路由,数据加载部分通过 Ajax 从后端获取 并且借助 CDN 缓存静态资源,SPA 应用飞速发展 阅读详情

React 发布已经十年了,笔者接触前端差不多也有十年时间了。说实话,如果没有 Head First 系列图书,我可能都没有走上编程这条道路。


56df4aa9324dee2d8bf979356a16728d.pngHead first


尽管现在看来这系列图书内容可能过时了。

Head First 系列图书让我知道,原来编程也可以这么通俗易懂的,对于刚接触这个领域的同学来说,从这里可以获得很多信心和成就感。这种风格也一直影响着我,学习和工作、传道授业过程中,我会努力把复杂的事情简化、通俗化,提炼本质。


这十年,前端渲染方式一直在演进,我觉得大概可以分为以下三个阶段:

448038a36f980a05b16549830722cebc.png
Untitled
  • 传统 SSR: 那时候前端还没有分离,在 JSP、ASP、Ruby on Rails、Django 这些 MVC 框架下,通过模板来渲染页面。jQuery 是这个阶段的主角

  • 前后端分离:从 Node.js 发布,到目前为止,是前端发展最迅速的 10 年。前后端分离的典型代表是 Angular 和 React、Vue 等框架,我觉得,促进前后端分离的主要原因还是随着需求的复杂化,分工精细化了。前端可以专注于 UI 的设计和交互逻辑。后端只需要提供 API,不需要关心前端的具体实现。

  • 同构前端:这几年前端框架的发展进入的深水区,随着云原生、容器技术、Serverless、边缘计算等底层技术设施的普及,也让‘前端’生存范围延展到服务端。前端开始寻求 UX 和 DX 的平衡点


通过这篇文章,你就可以知道近些年前端渲染模式的演变。废话不多说,直接开始吧。


CSR - 客户端渲染

c188ed010a74d9e359397e1bf5f9c8d9.png
Untitled

这个我们再熟悉不过了, 即前端页面在浏览器中渲染,服务端仅仅是静态资源服务器(比如 nginx)。

初始的 HTML 文件只是一个空壳,我们需要等待 JavaScript 包加载和执行完毕,才能进行交互,白屏时间比较长。

  • 优点

    • 部署简单

    • 页面过渡、功能交互友好

    • 适合复杂交互型应用程序开发

  • 缺点

    • SEO 不友好

    • 白屏时间长

    • 可能需要复杂的状态管理。时至今日,状态管理方面的轮子还在不停地造


dc6f4a674cbb59a5a1f0c81213244893.png

SSR - 服务端渲染

f44b825b589b29c4a9a2c69918536780.png
Untitled

为了解决 SEO 和白屏问题,各大框架开始支持在服务端渲染 HTML 字符串。

SSR 把数据拉取放到了服务端,因为离数据源比较近,数据拉取的速度会快一点。但这也不是完全没有副作用,因为需要在服务端等待数据就绪, TTFB(Time to First Byte) 相比 CSR 会长一点。

SSR 只是给我们准备好了初始的数据和 HTML, 实际上和 CSR 一样,我们还是需要加载完整的客户端程序,然后在浏览器端重新渲染一遍(更专业的说是 Hydration 水合/注水),才能让 DOM 有交互能力。

也就说, FCP(First Contentful Paint) 相比 CSR 提前了, 但是 TTI(Time to Interactive) 并没有太多差别。只是用户可以更快地看到内容了。

hydration 的主要目的是挂载事件处理器、触发副作用等等

优点

  • SEO 友好

  • 用户可以更快看到内容了

缺点

  • 部署环境要求。需要 Nodejs 等 JavaScript 服务端运行环境

  • 需要包含完整的 JavaScript 客户端渲染程序,TTI 还有改善空间





SSG - 静态生成

54efc903ad6081e3d5e38f244bc67681.png
Untitled

对于完全静态的页面,比如博客,公司主页等等,也可以使用 SSG 静态渲染。

和 SSR 的区别是,SSG 是在构建时渲染的。

和 CSR 一样,因为是静态的,所以在服务端不需要渲染运行时,部署在静态服务器就行了。

VuePress、VitePress、Gatsby、Docusaurus 这些框架都属于 SSG 的范畴。



优点

  • 相比 SSR, 因为不需要服务端运行时、数据拉取,TTFB/FCP 等都会提前。

缺点

  • 和 SSR 一样,也有客户端渲染程序、需要进行 Hydrate。对于内容为中心的站点来说,实际上并不需要太多交互,客户端程序还有较大压缩的空间。

  • 在构建时渲染,如果内容变更,需要重新构建,比较麻烦





ISG - 增量静态生成

4b451ea3c91529373b89d7d07a664d6d.png
Untitled

ISG 是 SSG 的升级版。解决 SSG 内容变更繁琐问题。

ISG 依旧会在构建时预渲染页面,但是这里多出了一个服务端运行时,这个运行时会按照一定的过期/刷新策略(通常会使用 stale-while-revalidate )来重新生成页面。

Progressive Hydration - 渐进水合

7e8b2f1f66f304d6315a502a833b71fe.png
Untitled

上文提到,常规的 SSR 通常需要完整加载客户端程序(上图的 bundle.js),水合之后才能得到可交互页面,这就导致 TTI 会偏晚。

最直接的解决办法就是压缩客户端程序的体积。那么自然会想到使用代码分割(code splitting)技术。渐进式水合 (Progressive Hydration ) 就是这么来的。

如上图,我们使用代码分割的方式,将 Foo、Bar 抽取为异步组件,抽取后主包的体积下降了,TTI 就可以提前了。

而 Foo、Bar 可以按照一定的策略来按需加载和水合,比如在视口可见时、浏览器空闲时,或者交给 React Concurrent Mode 根据交互的优先级来加载。

React 18 官方支持了渐进式水合(官方叫 Selective Hydration)。

要深入了解 Progress Hydration, 可以看这个视频。


SSR with streaming - 流式 SSR

0ea787c82da0df9d3dedcdf086c0fc18.png
Untitled

这个很好理解。尤其是在最近 ChatGPT 这么火。ChatGPT API 有两种响应模式:普通响应、流式响应

  • renderToString → 普通响应。即 SSR 会等待完整的 HTML 渲染完毕后,才给客户端发送第一个字节。

  • renderToNodeStream → 流式响应。渲染多少,就发送多少。就像 ChatGPT 聊天消息一样,一个字一个字的蹦,尽管接收完整消息的时间可能差不多,用户体验却相差甚远。

浏览器能够很好地处理 HTML 流,快速地将内容呈现给用户,而不是白屏干等。

下面这张图可以更直观感受两者区别:

b6273a4f0d58a310362631bbb982d5c6.png
来源:https://mxstbr.com/thoughts/streaming-ssr/

来源:https://mxstbr.com/thoughts/streaming-ssr/

对于常规的流式 SSR,优化效果可能没有我们想象的那么明显。因为框架还是得等数据拉取完成之后才能开始渲染。因此,除非是比较复杂、长序列的 HTML 树,至上而下需要较长时间的渲染,否则效果并不明显。

优点

  • 相比普通响应,流式响应可以提前 TTFB 和 FCP, 浏览器不用空转等待,可以连续绘制。

缺点

  • 数据拉取是 TTFB/FCP 的主要阻塞原因。为了解决这个问题,下文的 Selective Hydration 如何巧妙地解决这个问题。

Selective Hydration - 选择性水合

1929a1703c632dc615857326b974af47.png
Untitled

选择性水合(Progressive Hydration) 是 渐进式水合(Progressive Hydration) 和 流式SSR(SSR with Streaming) 的升级版。主要通过选择性地跳过‘慢组件’,避免阻塞,来实现更快的 HTML 输出, 从而让流式响应发挥应有的作用。

慢组件通常指的是:需要异步获取数据、体积较大、或者是计算量比较复杂的组件。

比较典型的慢组件是异步数据获取的组件, 如下图,未开启 Selective Hydration 的情况,会等待所有异步任务完成后才开始输出,而 Selective Hydration 可以跳过这些组件,等待它们就绪后,继续输出。

c9a99bffe347890a401866e53e8741b4.png
Untitled

我们可以在最新的 Next.js(当前是 13.4) 演示一下。

没有开启 Selective Hydration 的 Demo:
function delay(time: number) {
  return new Promise((resolve) => setTimeout(resolve, time))
}

/**
 * 获取关键数据
 */
function getCrucialData() {
  return delay(1000).then(() => {
    return {
      data: Math.random(),
    }
  })
}

function getData(time: number) {
  return delay(time).then(() => {
    return {
      data: Math.random(),
    }
  })
}

const Foo = async () => {
  const data = await getData(1000)

  return <div>foo: {data.data}</div>
}

const Bar = async () => {
  const data = await getData(2000)

  return <div>bar: {data.data}</div>
}

/**
 * 页面 🔴
 *
 */
export default async function WithoutSelective() {
  // 获取关键数据
  const crucialData = await getCrucialData()

  return (
    <div>
      <h1>Without Selective</h1>
      <p>This page is rendered without Selective Hydration.</p>
      <p>crucial data: {crucialData.data}</p>
      <Foo></Foo>
      <Bar></Bar>
    </div>
  )
}

运行结果:浏览器等待响应的时间为 3sf4004b35a88ac2ad4406c0b4d00e9ed8.png即所有服务端组件(Server Component) 就绪后才会有实际的内容输出。



开启 Selective Hydration 很简单,我们只需要用 Suspend 包裹起来,提示 React 这可能是一个‘慢组件’,可以跳过他:

export default async function WithoutSelective() {
  // 获取关键数据
  const crucialData = await getCrucialData()

  return (
    <div>
      <h1>Without Selective</h1>
      <p>This page is rendered without Selective Hydration.</p>
      <p>crucial data: {crucialData.data}</p>
      <Suspense fallback="foo loading">
        <Foo></Foo>
      </Suspense>
      <Suspense fallback="bar loading">
        <Bar></Bar>
      </Suspense>
    </div>
  )
}

现在来看运行结果:

807525d4147a248041b598e47308be8e.png
Untitled

明显 TTFB 提前了!但是完整的请求时间没变。


当 Foo 和 Bar 就绪后,Next.js 会将渲染结果写入流中。怎么做到的?


看一眼 HTML 就知道了:

81d97bbe5fbaad931d930ee5b2ed7ce4.png
Untitled

对于慢组件,React 会先渲染 Suspend 的 fallback 内容,并留一个插槽。

继续往下看,可以看到 Foo、Bar 的渲染结果:

9dd36e0a67c94c8dfdfc207dad5ebb37.png
Untitled

接着将渲染结果替换掉插槽。用于后续的水合。




总之,在服务端,Selective Hydration 在 SSR With Streaming 的基础上,通过选择性地跳过一些低优先级的慢组件来优化了 TTFB(主要的,相对于 FCP 等指标也优化了),更快地向用户呈现页面。

在客户端 Selective Hydration 的运行过程同 Progressive Hydration 。

关于 Selective Hydration 细节,可以阅读以下文章:

  • New in 18: Selective Hydration

  • New Suspense SSR Architecture in React 18

Islands Architecture - 岛屿架构

5fbea35e61bf135b2f4b4e9ba01ce741.png
Untitled

近两年,去 JavaScript 成为一波小趋势,这其中的典型代表是 Islands Architecture (岛屿架构)和 React Server Component(RSC, React 服务端组件)。

它们主张是:在服务端渲染,然后去掉不必要 JavaScript

岛屿架构的主要代表是 Astro。如上图,Astro 在服务端渲染后,默认情况下,在客户端侧没有客户端程序和水合的过程。而对于需要 JavaScript 增强,实现动态交互的组件,需要显式标记为岛屿。


这有点类似 Progressive Hydration 的意思。但是还是有很大的差别:

  • 岛屿是在去 JavaScript 这个背景下的交互增强手段。按 Astro 解释是:你可以将‘岛屿’想象成在一片由静态(不可交互)的 HTML 页面中的动态岛屿

  • 每个岛屿都是独立加载、局部水合。而 Progressive Hydration 是整棵树水合的分支,只不过延后了。

  • 岛屿可以框架无关。


去 JavaScript 后,可以缓解典型的 SSR TTI 问题。但是岛屿架构并不能通吃所有的场景,最擅长的是”内容为中心“的站点,即当静态的页面比重远高于动态比重时,去 JavaScript 的收益才是显著的。




React Server Component - React 服务端组件

148b36f2a6589df61fb60bc777e5e3d7.png
Untitled

在笔者看来,React Server Component(RSC) 本质上和岛屿架构的目的是一样的,都是去 JavaScript。只是实现的手段不同。


这是 Next.js 官方文档的示例图:和岛屿架构类似,对于静态的内容推荐使用 Server Component (SC), 而需要交互增强的,可以使用 Client Component (CC)。

a0613eb436fa2f8c1afdc977429c2fa0.png
Untitled

顾名思义,RSC 就是只能在服务端运行的组件。下面简单对比一下两者的区别:


Server ComponentClient Component
运行环境服务端- 服务端 + 客户端
- 仅客户端

JavaScript服务端组件依赖的相关程序对客户端不可见。
在这里实现了 ‘去 JavaScript’需要打包分发给客户端
水合不需要水合需要水合
支持 asyncYN
支持状态(state, context)NY
支持事件、副作用NY

RSC 优点类似 React Hooks 出来之前的函数组件: 就是一个普通的函数,不能使用 hooks,没有状态,只会被调用一次。

你可以通过 Next.js 的文档,深入学习 RSC。React 官方的讨论组也是不错的一手学习场地。



那么相比岛屿架构呢?

优点

  • Server Component 和 Client Component 都是 React 框架的组件,尽管有些区别,但是心智模型是统一的。

  • React Server Component 是 React 框架下一体化的原生解决方案,支持和 Selective Hydration 配合使用。岛屿架构只是一个架构模式。

  • 可以进行更细粒度和更灵活的组合。

缺点

  • Server Component 和 Client Component 还是有较大差别,在组合、通信上也有较多限制,需要开发者规划好服务端和客户端的边界。初期有一定上手门槛。当然,Islands 可能也有类似的问题。




总结

本文篇幅较长,我给大家整理了这些渲染模式的发展历程和关系脉络

f7e15550f1cc726e0fcb65dccf9f60f1.png
Untitled

任何技术的迭代都是有其动机和脉络。不推荐大家面向热度编程,大部分情况下,做到‘知其然,也知其所以然’,就足够了。




扩展阅读

本文主要参考的内容来源是patterns.dev。这个网站收录了许多实用的前端设计模式,大家赶紧收藏起来!


  • Pattern dev

  • Next.js

  • Next.js Incremental Static RegenerationExamples

  • reactwg/server-components

  • Is 0kb of JavaScript in your Future?

  • Islands Architecture

以上便是本次分享的全部内容,希望对你有所帮助^_^

喜欢的话别忘了 分享、点赞、收藏 三连哦~。

965a0db02ca42d1de63ee7f943fa9bbf.gif

从零搭建全栈可视化大屏制作平台V6.Dooring

从零设计可视化大屏搭建引擎

Dooring可视化搭建平台数据源设计剖析

可视化搭建的一些思考和实践

基于Koa + React + TS从零开发全栈文档编辑器(进阶实战

点个在看你最好看

前端使用ReadableStream.getReader来处理流式渲染 阅读详情

相关推荐

SSR、SPA、SSG 前端渲染三兄弟的餐厅创业大战

开网站就像开餐厅——用户要“上菜快”,老板想“省成本”,搜索引擎还得“看得懂菜单”。三位厨师(SSR、SPA、SSG)为此争得不可开交... 到底谁适合你的餐厅?

程序员「阿基米东」的编程之旅 864

前端渲染模式

在Web开发中,渲染(Rendering)是一个核心概念,指的是将应用程序的数据(data)与模板(template)结合,生成最终的HTML页面,这个页面随后会被浏览器解析并展示给用户。这个过程是动态Web应用的核心,因为它允许开发者根据不同的数据动态地生成页面内容,而不是每次更改都需要手动编写静态的HTML文件。 我们可以简单地把渲染理解为:渲染就是将页面数据和页面模版组装成html的过程

Vivien_CC的博客 2353

React全栈开发框架快速开发 @symph/joy=webpack+babel+redux+MVC+依赖注入+Dva兼容+服务端渲染+插件化配置+优化集成

现代前端应用是一个工程化的系统,和jquery时代有着很大的不同,以前主要工作是页面的模板填充、事件绑定、DOM更新,而现在需要和后端工程一样,从一个完整的系统层面思考问题,数据流和控制流如何流转?数据该如何存放?业务方法如何管理?UI组件如何封装和路由?最后还有编译打包,优化等。幸运的是有各种已经成熟的工具帮我们解决了绝大部分的问题,可如何将这些工具库组合在一起形成一个可用的应用,并不是一件简单...

lnlfps的博客 733

一文搞懂什么是前端渲染和后端渲染以及两者的区别

一文搞懂什么是前端渲染和后端渲染以及两者的区别

m0_51358164的博客 5051

人工智能-CS188 Project 2: Multi-agents

一、项目介绍 项目介绍网页 项目代码下载 本项目是采用Berkeley的CS188课程内容实习二的内容,在这个项目中,我们将为经典版本的Pacman 设计自动算法,包括幽灵。在此过程中,我们将实现 minimax 和 expectimax 搜索并尝试评估函数设计 完成作业只需要完成5个题目,按照项目介绍的步骤进行完成,主要是在multiAgents.py文件中进行补充代码 二、代码详情 1、Question1:Reflex Agent 略 2、Question2:Minimax 套用ppt上的minm

xiten的博客 8285

滑模控制算法——基本原理(附MATLAB程序)

选择一个滑模面和是设计参数。是滑模面函数,通常我们希望系统状态在的面上滑动。我们以一个简单的二阶系统作为示例,其状态空间方程为:是系统矩阵是输入矩阵是输出矩阵假设我们的系统如下:滑模控制算法的核心在于设计合适的滑模面和控制律,并分析系统在滑模面上的稳定性。通过上述公式和步骤,可以有效地设计滑模控制器,以处理具有非线性和不确定性的动态系统。总的来说,滑模控制算法因其鲁棒性和灵活性在处理复杂控制问题中表现出色,但在实际应用中需要精心设计以克服抖振现象和其他潜在问题。BuxuABDC。

qq_35623594的博客 2万+

现代前端框架实战(3):Next.js 路由与渲染模式

上一篇完成了纯组件与本地交互,本篇把任务看板迁入 Next.js App Router。我们会把页面、布局、动态段与加载边界落到目录结构中,并依据数据时效、个性化程度和交互需求选择渲染位置。

weixin_67153745的博客 368

电力现货市场出清机制解析:从理论到实践(附节点电价计算实例)

本文深入解析电力现货市场的核心出清机制,重点阐述了节点边际电价的计算原理与实践方法。通过对比系统边际电价、节点边际电价和分区边际电价三种模式,揭示了市场出清价格如何反映电力供需与网络阻塞。文章结合IEEE 30节点系统,提供了基于MATLAB和最优潮流模型的计算实例,详细展示了从构建模型到求解对偶变量以获取节点电价的全过程,为理解电力市场定价机制提供了从理论到实践的完整路径。

whisky的博客 756

中级前端进阶方向 框架篇第二十九步) 前端设计模式分析

本文介绍了前端开发中常用的设计模式及其应用场景。文章将设计模式分为三大类:传统设计模式在前端的应用(如单例模式、观察者模式、工厂模式)、前端特有设计模式(如组件模式、高阶组件、Hook模式)和现代框架/架构模式(如Flux架构)。每种模式都配有实现示例和典型应用场景分析,如Redux的Store采用单例模式、表单验证使用策略模式等。文章还提供了可视化演示界面,帮助开发者理解不同模式的实现方式。最后给出了选择设计模式的建议:先识别问题,再匹配模式,保持简单原则。

DeppBing的博客,全栈修炼记|记录一个开发者的进化轨迹 958

ArcGIS笔记13_利用ArcGIS制作岸线与水深地形数据?建立水动力模型之前的数据收集与处理?

在利用MIKE建立水动力模型之前,需要收集、处理和制作诸多数据和资料,主要有岸线数据、水深地形数据、开边界潮位驱动数据、风场数据、潮位和海流观测资料和站点潮汐调和常数资料等。本篇主要介绍这些资料的获取与处理。

晏长街的博客 5948

Vue3 - 完美解决高德地图定位失败 Get ipLocation failed.Geolocation permission denied.(获取ipLocation失败。地理定位权限被拒绝。)

Get ipLocation failed.Geolocation permission denied.,vue3引入高德地图当前定位失败 ,vue3中使用高德地图定位报错,高德地图API用户定位失败,高德地图H5 定位失败报错排查和解决方案,微信公众号H5网页高德地图定位报错,谷歌浏览器-高德地图定位失败geolocation,getCurrentPosition 返回的 message报错,如何解决此问题,uniapp h5高德地图,微信、QQ等内置浏览器定位失败,高德地图实现实时用户位置定位,引入高德

🏆 前端领域优质创作者 4171

前端框架的发展史

框架,目的很简单,能帮助我们提高效率 框架对现代化项目开发模式的意义。 前端框架第一阶段 最开始, Web 的开发非常简单, 界面的展示与后端逻辑的处理并没有分离开来,当然从工程量的角度来看,应用逻辑也是非常简单,此时并没有什么前端与后端的区别,如图: 前端框架第二阶段 随着业务量和功能的增加,以及网民们对应用的美观度都有了一定的要求之后,一个 Web 应用的开发逐渐复杂起来,一两个人是根本无法承担全部的开发任务的,这就需要大家通力合作,而一个应用的开发也就分为了不同的模块,工程师也就分为了不同的工种.

m0_55990909的博客 2872

我终于停止写 JUnit 了!用 JavaParser + GPT-4 自动生成 90% 覆盖率的单元测试

本文介绍了一种基于JavaParser和GPT-4的智能单元测试生成方案。针对开发者在单元测试编写中面临的繁琐、无聊和硬指标等问题,提出通过AST语法树分析代码结构,提取关键信息后生成精准提示词,再调用GPT-4自动生成高质量的单元测试代码。文章详细阐述了技术原理、实现步骤(包括JavaParser解析、上下文感知提示词构建和GPT-4调用),并展示了该方法能自动识别依赖、Mock对象和覆盖边界条件,显著提升测试效率。同时指出了在复杂数据结构、私有方法测试等方面的局限性,最终强调这种技术组合可以解放开发者,

BUG猿的博客 1129

前端渲染技术全解析:SSR、SSG、CSR 有什么区别?

定义CSR 是最常见的渲染模式,页面首次加载时,服务器只返回一个空的 HTML 页面和对应的 JavaScript 脚本文件。真正的页面内容会在浏览器端由 JS 执行、框架运行后再生成。工作原理用户访问页面 → 浏览器向服务器请求资源。服务器返回index.html(通常只有一个根节点div#app)和打包好的 JS 文件。浏览器下载并执行 JS,框架(Vue/React)在客户端“挂载”应用,生成完整的 DOM。用户看到最终页面内容。优缺点✅ 优点前后端分离,开发效率高。

2301_81137804的博客 1765

21天教你学会PCIe专栏(14)--安全性考虑

1.1 定义安全性(Security):安全性是指保护系统免受未经授权的访问、攻击和破坏,确保数据的机密性、完整性和可用性。1.2 重要性数据保护:保护敏感数据,防止数据泄露和篡改。系统防护:防止恶意攻击,确保系统的稳定性和可靠性。合规性:满足行业标准和法律法规的要求,避免法律风险。用户信任:提高用户对系统的信任度,增强市场竞争力。通过今天的学习,你应该对PCIe安全性的重要性和常见威胁有了深入的了解,掌握了实施安全措施的方法和工具,以及安全开发的最佳实践。

xiaoheshang_123的博客 850

数据挖掘实战-基于长短期记忆网络(LSTM)的黄金价格预测模型 | 97% 准确度

本实验基于Kaggle上提供的从2013年到2023年的黄金价格数据集,运用长短期记忆网络(LSTM)构建了黄金价格预测模型。该数据集详细记录了每日的黄金价格信息,包括开盘价、收盘价、高点、低点和交易量等,为模型的训练提供了丰富的数据支持。

m0_64336780的博客 1万+

前端应用开发技术历程的简要概览

阶段核心技术主流框架特征无静态页面为主jQuery交互增强,异步通信MVC/MVVMSPA兴起,模块化2015 - 今组件化开发前端工程化、现代构建2020 - 今SSR, TS, 微前端性能优化,现代部署前端未来趋势与潜力技术分析(2025展望)越来越多大型项目和公司强制使用 TypeScript。提升可维护性、代码提示和团队协作效率。几乎成为 JavaScript 项目的默认选项。React、Vue、Node.js 的主流库都已全面支持 TS。未来地位:核心基础技能。

qq_25547755的博客 867

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

抛弃jQuery,拥抱原生JavaScript

前端发展很快,现代浏览器原生 API 已经足够好用。我们并不需要为了操作 DOM、Event 等再学习一下 jQuery 的 API。同时由于 React、Angular、Vue 等框架的流行,直接操作 DOM 不再是好的模式,jQuery 使用场景大大减少。因此我们项目组在双十一后抽了一周时间,把所有代码中的 jQuery 移除。下面总结一下: Why not jQuery 1. 模

凯子的专栏 1033

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

深入理解 CSR / SSR / SSG:前端三种渲染模式的本质与选型

显著提升首屏速度,对搜索引擎友好,适合内容型网站(如新闻门户)。但服务器压力增大,TTP(Time to First Byte)可能变长,且动态交互仍需客户端 JavaScript 补充。优势在于交互体验流畅,页面切换无需刷新,适合高度动态的应用(如后台管理系统)。拥有最快的加载速度和安全性(无服务器漏洞),但无法处理实时数据更新。:高频动态数据优先 CSR 或 SSR(如社交平台),低频固定内容选择 SSG(企业官网)。:SSR 需要维护服务器,SSG 构建时间随页面数量增加,CSR 需优化打包体积。

2508_94048150的博客 422

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

微前端-‘无界‘

介绍:微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。(一个web应用中可以独立运行另一个web应用)

qq_58953163的博客 2346

前端页面渲染方式:CSR、SSR、SSG

本文对比了前端页面渲染的三种主流方式(CSR、SSR、SSG),从2025-2026视角分析了各自的优劣势和适用场景。CSR适合后台管理系统等交互密集型应用,SSR适用于需要SEO和个性化的动态内容,SSG则最适合内容相对静态的网站。文章还提供了Next.js框架中的具体实现示例,并给出选型建议:SSG/ISR优先考虑SEO和首屏速度,SSR适合实时个性化内容,CSR适用于纯管理后台。现代趋势是混合渲染模式,根据不同需求组合使用这些渲染策略。

m0_57545130的博客 693

前端单页面系统

ajax的出现,使得前后端分离;后端只提供API接口,前端通过ajax获取数据。 单页面富应用:SPA 整个网站只有一个html文件,前端分配路由(不同url地址),向后端获取数据;

guoyp2126的博客 1219

Vike架构深度解析:构建稳定可扩展的现代化Web应用框架

你是否想过在Next.js和Nuxt之外,是否存在一个既能提供稳定核心又能保持开发自由度的框架?Vike正是为此而生——一个专为构建关键任务应用设计的模块化前端框架。本文将深入剖析Vike的设计哲学、核心架构、扩展机制和性能优化策略,为中级开发者提供从理论到实践的完整指南。 ## 核心理念:稳定性与自由度的完美平衡 Vike的核心设计理念围绕"稳定核心+灵活扩展"展开。与主流框架不同,Vike

gitblog_00934的博客 1028

大前端之——数据交互

 从传统的开发过程来说,前端的主要作用是页面模板,数据渲染都交给的后端去了,到现在,还有很多公司是这种模式。如果你不幸是这个体制下的前端worder,那就要多注意了,现在主流乃至未来的前端的工作流程是怎样的了:   跟传统模式一样,第一步永远是基本的页面架构,也是我们平时比较熟悉的HTML+CSS。第二部分,也是大家学习过程中很少有机会练习到的数据传输渲染方面。那么平时具体工作中到底怎么实现这些...

lhw_csd的博客 227
上一篇: 开源推荐! yite-cli, 基于vite的开箱即用的项目脚手架
下一篇: WebAssembly能否取代Docker?
徐小夕@趣谈AI
博客等级 码龄9年 2338粉丝 521原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值