首页 > 其他分享 >浅谈 Angular 引入 Transfer State 机制的动机

浅谈 Angular 引入 Transfer State 机制的动机

时间:2023-10-11 22:47:31浏览次数:28  
标签:浅谈 Transfer 服务器端 SSR State HTML 客户端

在 Angular 之中,Transfer State 是一个用于在服务器端渲染 (SSR) 中传递状态的机制。它可以解决应用程序的一些重要问题,比如性能问题和用户体验问题。在这篇文章中,我将详细解释 Transfer State 的概念,工作原理以及如何在 Angular 应用程序中使用它。

首先,我们需要了解什么是服务器端渲染 (SSR) 和它为什么重要。在传统的单页应用程序 (SPA) 中,所有的资源和应用逻辑都在客户端处理。当用户访问网页时,服务器只提供一个空的 HTML 文件,然后客户端 JavaScript 脚本会加载数据并填充这个 HTML 文件。这种方式有两个主要的问题。第一个问题是性能。因为所有的处理都在客户端完成,所以如果用户的设备性能较差,或者网络连接不佳,那么用户就需要等待较长时间才能看到完整的页面。第二个问题是搜索引擎优化 (SEO)。因为搜索引擎通常无法执行 JavaScript 脚本,所以在 SPA 中搜索引擎只能看到一个空的页面,这对于 SEO 是非常不利的。

服务器端渲染 (SSR) 是解决这些问题的一种方式。在 SSR 中,服务器会预先执行应用的 JavaScript 代码,生成完整的 HTML 文件,并将其发送给客户端。这样,用户可以立即看到完整的页面,而无需等待 JavaScript 代码的执行和数据的加载。同时,因为服务器发送给客户端的是完整的 HTML 文件,所以搜索引擎可以看到所有的内容,这对于 SEO 是非常有利的。

然而,SSR 也有自己的问题。一个主要的问题是数据的重复获取。在 SSR 中,服务器需要获取数据以生成 HTML 文件。然后,当客户端接收到 HTML 文件并开始执行 JavaScript 代码时,它也需要获取同样的数据。这就导致了数据的重复获取,浪费了网络资源,也增加了页面的加载时间。

这就是 Transfer State 发挥作用的地方。Transfer State 是 Angular 提供的一个机制,可以在 SSR 中解决数据的重复获取问题。它允许你在服务器端获取数据,并将这些数据以一种可以在客户端访问的方式嵌入到 HTML 文件中。然后,在客户端,你可以从 Transfer State 中读取这些数据,而无需再次从服务器获取。

在 Angular 中,你可以使用 TransferState 类来使用 Transfer State 机制。这个类提供了一些方法,可以让你在服务器端和客户端之间传递数据。

首先,你需要在服务器端获取数据,并使用 TransferState.set 方法将这些数据存储到 Transfer State 中。这个方法接受两个参数,第一个参数是一个键,第二个参数是一个值。键是一个 StateKey<T> 类型的对象,你可以使用 makeStateKey 方法来创建它。

标签:浅谈,Transfer,服务器端,SSR,State,HTML,客户端
From: https://www.cnblogs.com/sap-jerry/p/17758405.html

相关文章

  • typescript: State Pattern
     /***StatePattern状态是一种行为设计模式,让你能在一个对象的内部状态变化时改变其行为。*TheContextdefinestheinterfaceofinteresttoclients.Italsomaintainsa*referencetoaninstanceofaStatesubclass,whichrepresentsthecurrent*stat......
  • 浅谈深拷贝和浅拷贝
    深拷贝和浅拷贝深拷贝importcopylist1=[1,2,3,4,[5,6,7]]list2=copy.deepcopy(list1)print(list1)print(list2)[1,2,3,4,[5,6,7]][1,2,3,4,[5,6,7]]list1[0]+=1print(list1)print(list2)[2,2,3,4,[5,6,7]][1,2,3,4,[5,6,7]]list1[4]......
  • 浅谈视频智能分析预警 事件识别算法硬件智能分析网关V2版的功能 及其智能分析网关V1版
    智能分析网关V1版本和智能分析网关V2版本相比,不仅在硬件外观上有所改变,而且在算法类别上也增加了一些新的内容。因此,今天我们将重点介绍智能分析网关V2版本的相关特性。智能分析网关V2是一种先进的数据处理设备,它融合了云计算、物联网和人工智能技术,主要应用于工业生产环境中......
  • StateFlow初步探究
    flow是如何工作的stateflow是建立在flow的基础上的,要理解stateflow,首先需要对flow有一定的了解,其实flow的原理很简单,不过是建立在了协程的基础上,假设没有协程,实际上flow就是用一个回调(FlowCollector)来进行工作的,加上了协程之后,由于协程支持中断和恢复,让flow可以匹配发送端和接......
  • 浅谈locust 性能压测使用
    1.基本介绍Locust是一个开源的负载测试工具,用于模拟大量用户并发访问一个系统或服务,以评估其性能和稳定性。编写语言为Python,可通过Python来自定义构建性能压测场景脚本。Locust支持分布式负载测试,可以通过多个机器协同工作来模拟大量用户并发访问。并提供了一个Web界面,可以实......
  • Builder,LayoutBuilder,StatefulBuilder
    Builder拿到contextStatefulBuilder拿到 context和状态LayoutBuilder拿到 context和父组件约束https://cloud.tencent.com/developer/article/2137054?areaSource=102001.1&traceId=F9yKRBl4-YYJ344Cdecv8......
  • useState() and useEffect() in react
    foruseState(),see:https://www.freecodecamp.org/news/usestate-vs-redux-state-management/  foruseEffect(),see: https://www.freecodecamp.org/news/react-useeffect-absolute-beginners/简单说就是:当前component之行完毕后会之行useEffect定义的第一个参数的函......
  • 【Azure Logic App】在Logic App中使用 Transfer XML组件遇见错误 undefined
    问题描述在AzureLogicApp中,使用TransformXML组件进行XML内容的转换,但是最近这个组件运行始终失败。 问题解答点击TransformXML组件上的错误案例,并不能查看到详细的错误消息。最后在AzureLogicApp的产品团队确认下,发现这是LogicApp自身升级后,当前LogicApp 依旧是旧版所引......
  • 【Azure Logic App】在Logic App中使用 Transfer XML组件遇见错误 undefined
    问题描述在AzureLogicApp中,使用TransformXML组件进行XML内容的转换,但是最近这个组件运行始终失败。 问题解答点击TransformXML组件上的错误案例,并不能查看到详细的错误消息。最后在AzureLogicApp的产品团队确认下,发现这是LogicApp自身升级后,当前LogicApp 依旧是......
  • 设计模式之 State Pattern状态模式
    State模式允许对象在内部状态变化时,变更其行为,并修改其类;优点:定位指定状态的行为,并且针对不同状态来划分行为,使状态转换显式进行;适用:对象的行为依赖于其状态,并且该对象必须在运行时根据其状态修改其行为;操作具有大量的以及多部分组成的取决于对象状态的条件语句; publicc......