【发布时间】:2020-09-23 14:33:56
【问题描述】:
我正在运行一个 Angular Universal 项目。我遇到的问题是我的页面在主包完全加载之前开始渲染,导致渲染不正确。
当 main.js 加载时,网站会正确呈现。当网站在慢速网络连接上加载时,这会导致难看的闪烁。
我可以做些什么来延迟渲染直到 main.js 完成加载?
【问题讨论】:
我正在运行一个 Angular Universal 项目。我遇到的问题是我的页面在主包完全加载之前开始渲染,导致渲染不正确。
当 main.js 加载时,网站会正确呈现。当网站在慢速网络连接上加载时,这会导致难看的闪烁。
我可以做些什么来延迟渲染直到 main.js 完成加载?
【问题讨论】:
您需要为 RouterModule InitialNavigation 添加一个额外的选项,并将其设置为“启用”。
当设置为启用时,初始导航在创建根组件之前开始。引导程序被阻止,直到初始导航完成。该值是服务器端渲染工作所必需的。
@NgModule({
imports: [
RouterModule.forRoot(appRoutes, {
initialNavigation: 'enabled'
})
],
exports: [RouterModule]
})
【讨论】:
确保仅在 dom 渲染完成后引导客户端应用程序。
main.ts
platformBrowserDynamic().bootstrapModule(AppModule);
document.addEventListener('DOMContentLoaded', () => {
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.log(err));
});
【讨论】: