2

我找不到任何关于 Backbone.Marionette 的文章,它使用 pushstate 和 Node.js 或 grunt,或者需要对 URL 处理进行认真讨论的地方。例如,用户应该能够将指向内部页面的链接发送给她的祖母并让该链接正常工作。pushstate 功能似乎特别不适合现实世界。有人可以发表评论并提供一些关于该主题的严肃文章的链接吗?

4

1 回答 1

3

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

  1. 通过调用来告诉 Backbone 使用 pushstate Backbone.history.start({ pushState: true });root: 'myApp'如果您的 Marionette 应用程序是从http://example.com/myApp而不是直接在http://example.com上提供的,您可能还需要向该参数添加类似的内容。
  2. 配置您的 Web 服务器,以便无论用户请求什么 URL,都会返回相同的内容(您的 Marionette 应用程序)(无需进行重定向)。

问题是 #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 服务器堆栈将有不同的方式来实现相同类型的东西。

于 2013-03-08T13:34:37.960 回答