首页 > 其他分享 >Angular 应用启用服务器端渲染后 Ngrx store 和 re-hydration 的交互关系

Angular 应用启用服务器端渲染后 Ngrx store 和 re-hydration 的交互关系

时间:2023-11-13 19:45:45浏览次数:39  
标签:Ngrx 服务器端 渲染 re 应用 Angular Store 客户端

在 Angular 启用服务器端渲染(Server-Side Rendering,SSR)后,当浏览器端访问这个 Angular 应用时,会涉及到一系列过程,包括初始化、数据获取、hydration(重新注水)和与 NgRx Store 之间的交互。下面我将详细介绍这些步骤:

  1. 初始化应用

    • 用户在浏览器中输入应用的URL。
    • 服务器端处理请求,生成一个包含Angular应用的HTML页面。
    • 服务器端将预渲染的Angular组件及其初始状态嵌入HTML页面。
  2. 初始渲染(Server-Side Rendering)

    • 浏览器接收到HTML页面,开始解析和渲染。
    • Angular应用的初始状态和模板通过HTML的内联脚本加载到浏览器中。
    • 浏览器开始呈现应用,这意味着用户能够看到页面内容,但此时还没有进行完全的客户端渲染。
  3. 数据获取

    • 一旦初始渲染完成,Angular应用可能需要从服务器或其他数据源获取更多数据。这可以通过HTTP请求或WebSocket等方式进行。
    • 这些数据用于更新应用的状态,以便呈现完整的页面内容。
  4. Hydration(重新注水)

    • 在客户端初始渲染之后,Angular应用需要"重新注水",也就是将客户端的DOM与服务器端渲染的HTML进行关联。
    • Angular会识别已经渲染的DOM,并与其匹配已经渲染的组件和状态。
    • 这个过程确保客户端渲染不会从头开始构建DOM,而是尽可能复用服务器端渲染的DOM。
    • 这减少了加载时间和提高了性能。
  5. NgRx Store 的交互

    • NgRx是一个状态管理库,通常用于管理Angular应用的状态。
    • 在SSR中,客户端和服务器端之间需要协调数据的状态。服务器端渲染会初始化应用状态,并在注水时传递给客户端。
    • 在客户端,NgRx Store会恢复这些状态并确保客户端的状态与服务器端保持同步。
    • 当客户端应用需要更多数据时,可以发起Action,这将触发HTTP请求或其他数据获取操作,然后将数据更新到Store中。
    • 组件可以选择订阅Store中的状态,以获取数据并反映在界面上,同时也可以分发Actions来改变状态。

总之,通过服务器端渲染和hydration,Angular应用在浏览器中的初始化速度更快,用户可以更快地看到内容。NgRx Store则用于管理状态,确保服务器端和客户端之间的状态同步。这种方式有助于提高性能和搜索引擎优化,同时提供更好的用户体验。

标签:Ngrx,服务器端,渲染,re,应用,Angular,Store,客户端
From: https://www.cnblogs.com/sap-jerry/p/17829957.html

相关文章

  • Angular 服务器端渲染应用 re-hydration 过程详解
    当使用Angular启用服务器端渲染(Server-SideRendering,以下简称SSR)时,应用程序的工作方式发生了显著变化。这使得Angular应用更加友好,不仅对搜索引擎爬虫更友好,还有助于改善应用的性能和加载时间。在本文中,我们将详细介绍在浏览器端访问启用SSR的Angular应用时背后发生的事情,特别侧......
  • 什么是 Angular 应用的 re-hydration 过程
    在讨论Angular的服务器端渲染(Server-SideRendering,简称SSR)以及重水合(Re-hydration)的过程之前,我们首先需要理解一些基本概念。Angular是一个流行的前端JavaScript框架,能够用于开发单页应用(SPA)。SPA在浏览器中加载一次,之后所有的用户交互都通过JavaScript来处理,这样能提......
  • 使用.NET Core创建Windows服务
    使用.NETCore创建Windows服务1.创建一个新的WorkerService项目打开命令行工具(例如:PowerShell、CMD、或者终端),然后输入以下命令创建一个新的WorkerService项目:dotnet new worker -n MyWorkerService这个命令将会创建一个名为"MyWorkerService"的新项目。2.添加必要的NuGe......
  • [题解] CFgym101623F Factor-Free Tree
    Factor-FreeTree当一棵二叉树中的每个节点的权值都与它所有祖先的权值互质时,我们称它为factor-freetree。给你一棵按照中序遍历的顺序的权值序列\(a\),求这个序列是否对应这一棵factor-freetree。如果是就输出每个节点的父亲。\(n\le10^5,a_i\le10^7\)。考虑怎么......
  • SpringBoot+Redis整合
    SpringBoot+Redis整合一.操作Json1.1pom文件<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.7.1......
  • Fast-Reid的一个小小创新,能够解决行人重识别
    竞赛简介多年来,技术已经彻底改变了我们的世界,改变了我们每天的生活,一切都可以通过轻松地点击实现连接和访问。oneAPI就是这样一个技术堆栈,它在构建许多创新解决方案方面具有巨大的潜力。通过这次比赛精心策划的问题,您既可以更多地了解和体验人工智能技术在特定领域的运用,包括在机......
  • JavaSE DataStructure
    JavaSEDataStructureListArrayListArrayListDemo1点击查看代码importjava.util.ArrayList;importjava.util.Collection;importjava.util.Iterator;classArrayListDemo1{publicstaticvoidmain(String[]args){Collection<String>list=newA......
  • VMware Workstation 17.5 Pro Unlocker & OEM BIOS for Windows
    VMwareWorkstation17.5ProUnlocker&OEMBIOSforWindows在Windows上运行macOSSonoma请访问原文链接:https://sysin.org/blog/vmware-workstation-17-unlocker/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org桌面HypervisorVMwareWorkstationProVMwar......
  • RLHF · PBRL | 发现部分 D4RL tasks 不适合做 offline reward learning 的 benchmark
    论文题目:BenchmarksandAlgorithmsforOfflinePreference-BasedRewardLearning,TMLR20230103发表。openreview:https://openreview.net/forum?id=TGuXXlbKsnpdf版本:https://arxiv.org/pdf/2301.01392.pdfhtml版本:https://ar5iv.labs.arxiv.org/html/2301.01392目......
  • IDEA中github的remote不见了怎么办?
    情况是:本来已经和github建立连接了,并且也上传了一些数据。然后我有在其他文件加拉了一下分支代码,结果该文件夹下的和remote的仓库记录消失了。 记录一下。......