【问题标题】:Showing Server side rendered page in angular app在 Angular 应用程序中显示服务器端呈现的页面
【发布时间】:2018-10-21 16:01:51
【问题描述】:

我正在使用 Angular 6,我正在使用服务器端渲染。

我想做的是:

当一个页面输出完全渲染后,我们在nginx中缓存30分钟,第一次请求url时是否可以显示准确的页面(ssr渲染页面)?

让我澄清一下这个问题,我想这样做: 我打开http://myExampleSite.com,因为这是第一个请求页面由 ssr 呈现并且数据被发送到浏览器,我想在第一个请求中显示呈现的数据(当它来自 ssr 时)以防止另一个 http 调用。

当我想访问 ssr 呈现的元素时,它返回 null,例如,当我想访问 getEelementById 呈现的 ssr 项的子元素时,它返回 null。

我认为当 Angular 应用程序加载时,它会加载组件中提到的 .html 文件,因此来自 ssr 的所有数据都会丢失。

有没有办法访问 ssr 渲染的页面数据?

我为什么要这样做?因为我想阻止额外的 http 调用,因为 ssr 已经存在数据,并且在路由更改时可以进行 http 调用并重新呈现页面,但不是在第一次加载页面时。

非常感谢

【问题讨论】:

  • 如果我正确理解您的问题,您不能在页面加载期间请求 ssr 页面并设置 innerHTML 吗?
  • 我无法访问ssr提供的渲染模板我的意思是,我只想显示ssr渲染了什么,如果它是直接调用并且不进行https调用,但是当内部路由时,http调用没问题
  • 假设我的要求正确,请查看我的答案:p

标签: javascript angular


【解决方案1】:

我在评论中的意思是这样的:

我的组件.html

<div [innerHTML] = "htmlstring" ></div>

我的组件.ts

export class mycomponent implement OnInit {  
ngOnInit() {
     // make http get call to myexamplesite.com
   // the response should be a string of html page (the ssr rendered page) 
  // assign the response to htmlstring  variable
   htmlstring = response
   } 
}

所以每次第一页加载时,内容总是myexamplesite 返回的内容

【讨论】:

  • 如果我错了,请纠正我,当您想加载在服务器中呈现的页面的一部分时它正在工作,但我想要做的是对整个页面执行此操作
  • 这取决于您的用户界面。如果该组件作为整个页面加载,那么它将整个页面。如果你有侧边栏等,那么它将只是整个页面的一部分。取决于你的路由器插座在哪里。我只是给出一个想法:)
  • 对不起,但没有意义。您正在通过 Angular 渲染一个 ssr 页面。 SSR 的目标是摆脱 Angular 渲染器。那么 innerHTML 可能会减慢页面速度并暴露安全问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 2021-04-20
  • 2020-12-25
相关资源
最近更新 更多