Mean Stack 应用程序:页面不会在刷新时重新呈现,但 returns 仅 JSON

Mean Stack Application: Page does not rerender on refresh, but returns only JSON

我目前正在设计一个 MEAN.js 网络应用程序,出于某种原因,每当我在路由或 window.reload 上刷新页面时,它不会重新呈现页面,而只会 returns 在当前路径找到的 JSON 文件。

例如,当我在 localhost:8080/people:

如果我从主页点击这里,我得到

但是如果我出于某种原因点击刷新或重新加载页面,我会得到

有谁知道为什么会发生这种情况以及如何解决它?

推测您正在使用 Angular 调用的 html5Mode routing

这使用 pushState and friends。这些浏览器功能旨在让您构建一个网络应用程序,该应用程序具有看似独立的页面 ,但具有独特的真实 URLs 但是当您更改页面时,您实际上修改了DOM 当前页面(到状态 B),而不是从头开始加载新页面。

pushState 和朋友的设计意图是,如果您请求映射到状态 B 的唯一、真实的 URL,那么服务器将为浏览器提供 HTML直接B国。

这意味着:

  • 如果您没有先访问主页就到达了站点,那么您 加载您尝试直接加载的内容(这比加载主页然后用 JavaScript 修改它更快)。
  • 如果您在没有 JavaScript 工作的情况下到达该站点(可能是 for many reasons, then everything still works. See also Progressive Enhancement and Unobtrusive JavaScript.

您做错的是您的 URL 映射到基于 JSON 的 API 而不是生成页面的服务器端进程。

您需要编写服务器端进程。您可以考虑使用 Accept header 来允许他们与 API 共享 URL(因此服务器 returns 要么 JSON 要么 HTML 取决于根据客户所说的接受。