【发布时间】:2014-02-25 17:01:22
【问题描述】:
我正在使用 Backbone.js 开发 Web 应用程序,但我对路由和 Html5 推送状态的正确使用存在疑问。这是我的代码
var HoopRouter = new HoopApp.Router.RequestManager;
Backbone.history = Backbone.history || new Backbone.History({});
Backbone.history.start({
root : '/web_app',
pushState : true
});
我正在这样做:
Backbone.history.navigate('#gameScreen/31', { trigger : true });
这工作正常,但给了我这样的网址 https://my_host/web_app/gameScreen/31 但是当我在导航栏中输入此网址并按 Enter 时,浏览器说在此服务器中找不到该网址,并且 href 链接也不起作用。如果我将 pushState 检查为 false,它运行良好,但 Backbone 使用“#”路由,我想使用“/”路由。
我不知道我是不是忘记了什么。
【问题讨论】:
-
您是否真的有一个对应于my_host/web_app/gameScreen/31 的页面或可以提供该页面的服务器端路由器?根据您到目前为止向我们展示的内容,我没有看到任何已定义的客户端路由,因此除非上一个问题的答案是肯定的,否则我不希望这会起作用。
-
目前这是我定义的客户端路由 { "" : "index", "gameScreen/:gameid" : "html5game", ":whatever" : "notFound" }
-
您的服务器也希望尝试为该路由提供服务,因此如果您只需要客户端路由,则需要让它显式忽略该路由。处理此问题的一种典型方法是让它处理基本路由并切断 url 中之后的任何内容,以便它将来自该基本 url 的所有路由视为相同。
标签: backbone.js pushstate