【问题标题】:backbone router not working without # in the URL没有 # 在 URL 中的骨干路由器不工作
【发布时间】:2013-10-16 08:35:42
【问题描述】:

我正在为我的 HtML5 应用程序及其单页应用程序使用主干布局管理器、把手和 requirejs。我正在使用backbone.history.start({ pushState:true }),这有助于摆脱 # 如果我将 URL 键入为 localhost:9090/#abc 但如果我将 URL localhost:9090/abc 粘贴到浏览器中,那么它不会路由到正确的页面,但它会app.yaml 中的路由。

在点击事件时,我能够导航到 URL localhost:9090/abc,但当我直接在浏览器中复制粘贴时则不行。

我已经做了很多研究来解决这个问题,但没有结果。任何建议都会有所帮助..提前感谢

【问题讨论】:

    标签: html google-app-engine requirejs app.yaml backbone-layout-manager


    【解决方案1】:

    首先您应该阅读 url 中的 # - fragment identifier。简单来说:# 之前的所有内容都在服务器上路由,# 之后的所有内容都在浏览器上的 javascript 中路由。

    所以当您调用localhost:9090/#abc 时,服务器会在/ 上查找资源,我猜这是您的JS 应用程序并将其返回给浏览器。浏览器然后执行 JS 应用程序,它反过来检查 # 之后的标识符并决定显示什么。

    此外,我对您要做什么感到有些困惑-您是否要摆脱 # 但同时在 JS 应用程序中支持历史记录? Afaik 这不能完成。

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      相关资源
      最近更新 更多