Model view controller 如何在Backbone.js中使用PushState路由器

Model view controller 如何在Backbone.js中使用PushState路由器,model-view-controller,html,backbone.js,router,pushstate,Model View Controller,Html,Backbone.js,Router,Pushstate,我正在使用下面的路由器 App.Router.PersonRouter = Backbone.Router.extend({ routes: { "": "homepage", "/p/:id": "getpost", "/p/:id/*file": "download" }, homepage: function () { alert("requesting home page"); },

我正在使用下面的路由器

App.Router.PersonRouter = Backbone.Router.extend({
    routes: {
        "": "homepage",
        "/p/:id": "getpost",
        "/p/:id/*file": "download"
    },
    homepage: function () {
        alert("requesting home page");
    },
    getpost: function (id) {
        alert("Requested post with id " + id);
    },
    download: function (id, file) {
        alert("person with id " + id + " is requesting file " + file);
    }
});
并开始尝试backbone.js中的
HTML5 pushState
选项。因为这些文件是从index.html文件提供的。只是当使用HTML5 pushstate api时,
警报不会显示,但当使用hashbang url时,警报会显示

Backbone.history.start({pushState:true,root:"index.html"});

Backbone.history.start
中的
root
选项是路径而不是资源

还要确保你杀死了你路线中领先的
/
,所以
用“p/:id”
代替
“/p/:id”

这应该可以让您继续。

主干.history.start中的
root
选项是一个路径而不是资源

还要确保你杀死了你路线中领先的
/
,所以
用“p/:id”
代替
“/p/:id”

这应该可以让你开始了。

我需要开头的
/
,因为url看起来很自然
/#/p/3
字符是否会干扰pushState api的工作?关于
root
的文档很少,所以当使用root时,路由器是否匹配
index.html/#/p/3
?您不需要开头的
/
。所有路径都应该相对于根。您的服务器应该在/root、/root/p/3/root/p/3/somefile.txt处进行适当的回复。那么它是否能与pushState统一工作。现在,这在最愚蠢的web服务器(IIS)上是不可能的,
您的服务器应该在/root、/root/p/3/root/p/3/somefile.txt上进行适当的回复
即使现在,我们仍在使用Microsoft web产品的技术的石器时代,尽管我对您对IIS的描述无法达成更多一致,当然,即使是IIS也有可能提供多个URI?至少在IIS 7中,我想我需要他们的操作系统的专业版本lol。我会将此标记为答案,因为您排除了疑问,我需要开头的
/
,因为url的自然外观
/#/p/3
字符会干扰吗pushState api的工作原理?关于
root
的文档很少,所以当使用root时,路由器是否匹配
index.html/#/p/3
?您不需要开头的
/
。所有路径都应该相对于根。您的服务器应该在/root、/root/p/3/root/p/3/somefile.txt处进行适当的回复。那么它是否能与pushState统一工作。现在,这在最愚蠢的web服务器(IIS)上是不可能的,
您的服务器应该在/root、/root/p/3/root/p/3/somefile.txt上进行适当的回复
即使现在,我们仍在使用Microsoft web产品的技术的石器时代,尽管我对您对IIS的描述无法达成更多一致,当然,即使是IIS也有可能提供多个URI?至少在IIS 7中,我想我需要他们的操作系统的专业版本lol。我会将此标记为答案,因为您排除了疑问