一起了解基于React的服务端渲染&同构

简介: 一起了解基于React的服务端渲染&同构

概念分析:

服务端渲染(SSR)

  • 更好的⾸屏性能
  • 更利于 SEO,爬虫可以直接抓取已渲染的内容

客户端渲染

  • 前后分离,⻚⾯的交互

同构:服务端和客户端都可以运⾏的同⼀套代码

  • 同一套代码,复用率,可维护性增强
  • 同时具有SSR与前后端分离的优势,利于 SEO 优化
  • 更好的性能与更好的用户体验

架构思路及要点

React提供了服务器渲染的各种API,可快速满足同构需求。
同一份代码要在服务端与客户端各执行一次,首屏加载完服务端渲染的页面后,客户端紧接着继续执行并重新渲染页面,接管后续的页面交互。

同构关键点

所谓同一份代码同时运行服务端和客户端,其实可复用的基本为组件,服务端与客户端的差异无法完全被抹平,而React的好处就是对服务端构建提供了不少解决方案。

1. 路由不同

客户端使用:<BrowserRouter /> 服务端使用:<StaticRouter />

2. 代码的同构

image.png

ReactDOMServer.renderToString(element);
官方文档:
https://reactjs.org/docs/react-dom-server.html#rendertostring
源码分析:
https://github.com/facebook/react/blob/master/packages/react-dom/src/server/ReactDOMStringRenderer.js
ReactDOM.hydrate, 同全完法用 ReactDOM.render

总结:

  • 双端路由怎么工作

具体看代码,路由两端分开维护

  • 数据同构

数据部分使用redux来互通

  • 渲染同构

代码部分同构使用react

SSR架构图

image.png

以上对基于React的同构方案进行了简单的介绍以及要点梳理,希望对你有帮助。

感兴趣的童鞋可以尝试一步步从零开始实现一个React同构项目Demo。

参考资料:

https://imweb.io/topic/5d2da910b17a4bd24bd0678a 腾讯IMWEB团队

相关文章
|
2月前
|
前端开发 JavaScript
React学习之——条件渲染
【10月更文挑战第16天】React 中没有像Vue中v-if这种指令。React 中的条件渲染和 JavaScript 中的一样,使用 JavaScript 运算符 if 或者条件运算符去创建元素来表现当前的状态,然后让 React 根据它们来更新 UI。
|
2月前
|
前端开发 JavaScript 容器
React 元素渲染
10月更文挑战第7天
34 1
|
2月前
|
监控 前端开发 UED
在 React 18 中利用并发渲染提高应用性能
【10月更文挑战第12天】利用并发渲染需要综合考虑应用的特点和需求,合理运用相关特性和策略,不断进行优化和调整,以达到最佳的性能提升效果。同时,要密切关注 React 的发展和更新,以便及时利用新的技术和方法来进一步优化应用性能。你还可以结合具体的项目实践来深入理解和掌握这些方法,让应用在 React 18 的并发渲染机制下发挥出更好的性能优势。
125 59
|
2月前
|
JavaScript 前端开发 算法
前端优化之超大数组更新:深入分析Vue/React/Svelte的更新渲染策略
本文对比了 Vue、React 和 Svelte 在数组渲染方面的实现方式和优缺点,探讨了它们与直接操作 DOM 的差异及 Web Components 的实现方式。Vue 通过响应式系统自动管理数据变化,React 利用虚拟 DOM 和 `diffing` 算法优化更新,Svelte 通过编译时优化提升性能。文章还介绍了数组更新的优化策略,如使用 `key`、分片渲染、虚拟滚动等,帮助开发者在处理大型数组时提升性能。总结指出,选择合适的框架应根据项目复杂度和性能需求来决定。
|
2月前
|
前端开发 JavaScript 算法
React 渲染优化策略
【10月更文挑战第6天】React 是一个高效的 JavaScript 库,用于构建用户界面。本文从基础概念出发,深入探讨了 React 渲染优化的常见问题及解决方法,包括不必要的渲染、大量子组件的渲染、高频事件处理和大量列表渲染等问题,并提供了代码示例,帮助开发者提升应用性能。
59 6
|
2月前
|
前端开发 JavaScript
React 条件渲染
10月更文挑战第9天
31 0
|
4月前
|
资源调度 前端开发 API
React Suspense与Concurrent Mode:异步渲染的未来
React的Suspense与Concurrent Mode是16.8版后引入的功能,旨在改善用户体验与性能。Suspense组件作为异步边界,允许子组件在数据加载完成前显示占位符,结合React.lazy实现懒加载,优化资源调度。Concurrent Mode则通过并发渲染与智能调度提升应用响应性,支持时间分片和优先级调度,确保即使处理复杂任务时UI仍流畅。二者结合使用,能显著提高应用效率与交互体验,尤其适用于数据驱动的应用场景。
85 20
|
4月前
|
前端开发
React 如何使用条件渲染
【8月更文挑战第17天】React 如何使用条件渲染
47 3
|
4月前
|
前端开发 JavaScript 中间件
|
4月前
|
前端开发 JavaScript 数据管理
React 中无渲染组件
【8月更文挑战第31天】
46 0