【问题标题】:Angular universal with HashLocationStrategy带有 HashLocationStrategy 的 Angular 通用
【发布时间】:2017-10-18 12:17:32
【问题描述】:

我正在向使用 HashLocationStrategy 的 Angular 4 应用程序添加服务器端渲染,我想知道 Angular Universal 是否真的支持它。如果确实如此,我很好奇,服务器如何知道正在请求哪个路由?

【问题讨论】:

  • 不,服务器实际上不需要知道它。在 Angular 应用程序中,控件应始终使用 Angular。服务器用于在任何给定路径中跟踪的默认策略是 index.html。所以,在 Angular 中设置错误页面是非常必要的,就好像用户访问了一些子路由并且 Angular 没有初始化并且在这种情况下不会找到路由器路径。因此,重新定向回 index.html 页面,角度可以从该页面接管。如果这不是您想要的,请告诉我。
  • @Lambo14 这实际上不是他们想要的。问题是关于通用应用程序的“服务器端渲染”。这意味着“初始”请求实际上是“呈现”到该位置,而不仅仅是简单的重定向。因此,对/products 的响应实际上将呈现的响应返回到该位置,并且“然后”应用程序引导和客户端路由接管。所以这里要问的是#/products 是否会发生这种情况,这是一个片段,如果可以,服务器如何识别它。
  • 问题真正归结为“服务器是否可以在 URL 中看到片段”。 AFAIK,我不这么认为。因此,我推测“支持”将仅限于默认为“索引”路由,然后让增强的应用程序接管。当然它可以“客户端”,因为片段会被保留。

标签: angular routes universal server-side-rendering


【解决方案1】:

开箱即用,不。见:https://github.com/angular/universal/issues/717

https://www.rfc-editor.org/rfc/rfc2396#section-4

当使用 URI 引用对 标识的资源,可选的片段标识符,与 由交叉线(“#”)字符组成的 URI,由附加的 参考信息由用户代理解释后 检索操作已成功完成。因此,它不是 URI 的一部分,但通常与 URI 结合使用。

服务器在设计时不知道散列。在服务器上你可以 为链接生成正确的哈希 URL,但在呈现 某些页面,您需要另一种方法来告诉服务器要访问哪个页面 生成

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 2019-05-22
    • 2021-11-10
    • 2017-04-08
    • 2018-06-02
    • 2020-03-20
    • 2016-11-10
    相关资源
    最近更新 更多