关于 Angular SSR 应用 index.html 中的 serverApp-state script 元素

发布时间 2023-11-17 14:35:45作者: JerryWang_汪子熙

首先,我们需要了解 Angular SSR(Server-Side Rendering) 以及 SSR Transfer State。Angular SSR 是 Angular 应用程序的服务端渲染技术,它允许 Angular 应用程序在服务器上渲染其组件,并生成静态 HTML 页面,再发送给客户端。这种方法可以提高首次加载速度,提升 SEO 效果。

而 SSR Transfer State 则是 Angular SSR 的一个重要特性。在传统的客户端渲染中,数据的获取通常在浏览器端完成,例如通过 AJAX 请求。但在 SSR 中,数据的获取会在服务器端完成。为了避免浏览器再次获取这些数据,Angular 提供了 SSR Transfer State 机制,允许服务器端获取的数据在客户端被重复利用。

现在让我们回到本文标题中的 <script id=serverApp-state type=application/json> 元素。这个元素正是 SSR Transfer State 机制的关键部分。它包含了服务器端渲染时获取到的数据,以 JSON 格式存储。当这个 HTML 页面加载到客户端时,Angular 会从这个 script 元素中读取数据,避免客户端再次获取。

举个例子,假设我们有一个新闻应用,首页需要显示最新的新闻列表。在服务器端渲染时,服务器会从后端 API 获取新闻列表,渲染出带有新闻列表的 HTML 页面。同时,服务器还会把新闻列表数据保存到 SSR Transfer State 中,这样在 <script id=serverApp-state type=application/json> 元素中,就会有类似这样的内容:{"news": [{"title": "News 1", "content": "Content 1"}, {"title": "News 2", "content": "Content 2"}]}

当这个页面加载到客户端时,Angular 会从 <script id=serverApp-state type=application/json> 元素中读取新闻列表数据,而不需要再次从后端 API 获取。这样可以减少网络请求,提高应用性能。

总的来说,SSR Transfer State 是一个非常重要的特性,能够提高 Angular SSR 应用的性能。同时,使用 SSR Transfer State 时,需要注意数据的安全性和隐私性,避免敏感数据被泄露。