Marionette PushState URL Handeling - 怎么做?

时间:2013-03-07 23:41:39

标签: backbone.js marionette pushstate

我一直无法在Backbone.Marionette上找到任何关于使用带有Node.js或grunt的pushstate的文章,或者需要对关于URL handeling进行认真讨论的内容。例如,用户应该能够将内部页面的链接发送给她的祖母并使链接起作用。 pushstate功能似乎不适合现实世界。有人可以评论并提供一些有关该主题的严肃文章的链接吗?

1 个答案:

答案 0 :(得分:3)

一般来说,你真的只需要做两件事......

  1. 通过调用Backbone.history.start({ pushState: true });告诉Backbone使用pushstate。如果您的Marionette应用程序是从http://example.com/myApp而不是直接在http://example.com上提供,则可能还需要向该参数添加root: 'myApp'之类的内容。
  2. 配置您的网络服务器,以便无论用户请求的是哪个网址,都会返回相同的内容(您的Marionette应用)(不进行重定向)。
  3. 问题在于,#2的实现方式不同,具体取决于您使用的Web服务器类型。而你还没有告诉我们你在筹码上。例如,在ASP.NET中,可以通过在RouteConfig.cs文件中添加类似的东西来设置'catch all'路径来处理:

            // all requests (except those explicitly handled by another route)
            // go to HomeController.Index and then the Backbone router examines
            // the URL client-side to determine client-side what to do
            routes.MapRoute(
                name: "Default",
                url: "{*clientRoute}", // this is wildcard which captures the entire URL
                defaults: new { controller = "Home", action = "Index" }
            );
    

    其他Web服务器堆栈将有不同的方式来实现相同类型的事物。