具有(RE)水合角的SSR

时间:2019-08-01 15:02:01

标签: angular angular-universal

Angular Universal用于服务器端渲染。

我有一个功能齐全的Angular应用。增加FCP。我需要在服务器端渲染中添加水分。

Angular Universal是否允许动态SSR。在服务器端加载某些组件?

我找不到与此相关的任何内容。(是的,我在Google上做了一些Google搜索)。

我在这里找到了类似的话题,但是我需要了解的更多。

The dicision boundary between Angular & Angular Universal

找到了一些与here相关的文章。

是将数据绕过后端还是不关心数据,仅呈现静态数据?

在角度通用情况下是否可能出现以下情况

如果页面上有三个组件

<Comp1></Comp1>
<Comp2><Comp2>
<Comp3><Comp3>

Comp1和Comp3主要是静态的。Comp2是用户特定的。我不希望在服务器端呈现comp2。服务器渲染中的Comp1和Comp3,客户端上的Comp2。

2 个答案:

答案 0 :(得分:0)

angular通用的工作方式是将组件渲染到服务器端,然后,在页面加载后,客户端Angular应用将接管并重新渲染组件。

如果您不使用状态传输,则有时客户端可能会从API请求数据时出现闪烁。

如果您只想不呈现Comp2服务器端,则可以简单地基于平台(浏览器/服务器)添加一些条件

template.html

<Comp1></Comp1>
<Comp2 *ngIf=isBrowser></Comp2>

component.html

import {Injectable, Inject, PLATFORM_ID, Optional} from '@angular/core';
import {isPlatformBrowser} from "@angular/common";

isBrowser: boolean = false;

constructor(@Inject(PLATFORM_ID) private platformId: Object)
{
    this.isBrowser = isPlatformBrowser(this.platformId);
}

但是请注意,无论如何Comp1都会再次在客户端呈现

答案 1 :(得分:0)

不知道它是否可以满足您的所有需求,但是您可以创建静态网站,并像在agular.io网站上使用的那样将网络元素用作动态组件。另外,您可以在单击或其他事件中懒惰地导入那些组件。