0

我有一个角度项目。在我的 home 组件上,我通过 ngOnInit 方法从后端服务器加载实时数据。它工作得很好。但是为了提高性能,我使用了 Scully,它为我的 home 组件生成了一个静态页面。现在,当我在浏览器中加载我的页面时,它会下载静态页面。其中包含所有最新数据。这意味着,我不必再次加载数据。

即使我禁用 Javascript,生成的页面也会按预期工作。所以我的问题是当浏览器加载的页面已经有实时数据时,如何避免加载实时数据。

我最初的方法是使用文档对象检查元素,但不幸的是,一旦我在 ngOninit 中,即使它在那里也找不到元素。这里;是我的代码

ngOnInit(): void {    
    let blogItems = document.getElementsByClassName("blog-item");
    let isRendered : boolean = blogItems != null && blogItems.length > 0;
    if(isRendered) 
      return
    else {
      console.log("not rendered yet");
      console.log(blogItems)
      console.log("count: " + blogItems.length)
    }  
    //code to load live data
}

有没有办法做到这一点?

如果我使用静态客户端渲染,那么 lighthouse 评估的性能非常糟糕(即使使用由 ng new app 生成的默认角度项目),这就是为什么我必须使用静态生成的页面。

4

0 回答 0