Гидратация — процесс восстановления состояния приложения на стороне клиента после рендеринга на сервере. В Angular это особенно актуально при использовании Angular Universal для серверного рендеринга (SSR).
First Contentful Paint
сокращается).Для включения гидратации в Angular с использованием Angular Universal необходимо:
ng add @nguniversal/express-engine
withServerTransition в корневом модуле
приложения:@NgModule({
imports: [
BrowserModule.withServerTransition({ appId: 'my-app' }),
AppRoutingModule
],
bootstrap: [AppComponent]
})
export class AppModule {}
renderModule
или renderModuleFactory, который генерирует HTML с нужными
данными.import { TransferState, makeStateKey } from '@angular/platform-browser';
const USER_KEY = makeStateKey('user');
constructor(private transferState: TransferState) {}
ngOnInit() {
const user = this.transferState.get(USER_KEY, null);
if (!user) {
this.fetchUser().subscribe(u => this.transferState.set(USER_KEY, u));
}
}
Использование TransferState позволяет передавать данные
с сервера на клиент, ускоряя гидратацию и минимизируя повторные
запросы.
Гидратация является ключевым инструментом для оптимизации Angular-приложений с серверным рендерингом, повышая производительность и улучшая пользовательский опыт.