骨干路由器:摆脱URL中的#

时间:2014-03-21 23:27:53

标签: javascript node.js backbone.js express

我正在使用骨干路由器

App.Router = Backbone.Router.extend({
      routes: {
        "todo": "todo"
      },
      todo: function() {
        alert(1);
      }
});
Backbone.history.start();

当我转到网址时这很有效:域名:port /#/ todo

我希望在URL中没有#的情况下工作,我尝试将pushState参数放在文档中。

    Backbone.history.start({pushState: true});

这只是将#url重定向到非哈希值

domain:port /#/ todo(重定向到==>)域名:port / todo

但是当我直接访问此网址时

域:端口/ TODO

它不起作用:“不能GET / todo”。

有什么办法,我可以让这个URL在没有#的情况下工作吗?

1 个答案:

答案 0 :(得分:3)

您需要编写服务器端代码来传递URL的页面。

使用pushState只是告诉浏览器"我使用JS来更改页面的内容,使其与您要求提供此URL的内容相匹配,并且#34;。

它不会导致内容与该网址匹配,您必须将其作为单独的任务执行。