我目前正在设计一个 MEAN.js Web 应用程序,由于某种原因,每当我在路由或 window.reload 上刷新页面时,它不会重新渲染页面,而只返回在当前找到的 JSON 文件路线。
例如,当我在 localhost:8080/people 时:
如果我从主页单击此处,我会得到
但是如果我出于某种原因点击刷新或重新加载页面
有谁知道为什么会发生这种情况以及如何解决它?
请您参考如下方法:
大概您正在使用 Angular 调用的 html5Mode routing .
这使用 pushState
and friends 。这些浏览器功能旨在允许您构建一个 Web 应用程序,该应用程序具有看似独立的页面具有独特的真实 URL,但当您更改页面时,您实际上会修改当前页面的 DOM(以状态 B),而不是从头开始加载新的状态。
pushState
及其 friend 的设计意图是,如果您请求映射到状态 B 的唯一真实 URL,那么服务器将直接向浏览器提供状态 B 的 HTML。
这意味着:
- 如果您在没有先进入主页的情况下到达网站,那么您 直接加载您尝试加载的内容(这比加载主页然后用 JavaScript 修改它要快)。
- 如果您在 JavaScript 不工作的情况下到达网站(可能是 for many reasons ,那么一切仍然有效。另请参阅 Progressive Enhancement 和 Unobtrusive JavaScript 。
您做错的地方是,您的 URL 映射到基于 JSON 的 API,而不是生成页面的服务器端进程。
您需要编写服务器端进程。您可以考虑使用Accept header允许他们与 API 共享 URL(因此服务器根据客户端所说接受的内容返回 JSON 或 HTML)。