我正在尝试理解基础的SSR和AngularIO (最新版本)。我知道有CSR和SSR,它们的名字应该是不言自明的。
CSR执行客户端中的所有逻辑,例如,<app-route>按预期为空。
然而,SSR的行为并不像预期的那样。
我为我的项目“打开”了SSR,我看到<app-route>现在被填充了相应的HTML。但是我也可以看到,我在组件的构造函数中发出的HTTP请求仍然在客户机中执行。如果服务器已经这么做了,为什么有必要这样做呢?
ngOnInit(): void {
this.files = new Array;
this.http.get<any[]>("https://www.example.com/bar.json")
.subscribe(data => this.files = Object.keys(data));
}在浏览器调试器的网络部分,我可以看到bar.json仍然被加载。为什么会这样呢?
发布于 2020-10-01 10:21:55
从angulario SSR来看,如果由于某种原因,您没有使用@nguniversal/*引擎包,您可能需要自己处理它。
建议的解决方案是将完整的请求URL传递给renderModule()或renderModuleFactory()的options参数(取决于您在服务器上呈现AppServerModule的内容)。这个选项是干扰最小的,因为它不需要对应用程序进行任何更改。在这里,“请求URL”将请求的URL作为应用程序在服务器上呈现的响应。例如,如果客户端请求https://my-server.com/dashboard,而您正在服务器上呈现应用程序以响应该请求,则options.url应设置为https://my-server.com/dashboard。
https://stackoverflow.com/questions/62184127
复制相似问题