处理没有主题标签的骨干路由

时间:2013-05-16 22:33:33

标签: javascript backbone.js

所以我尝试做的是当有人使用我的路由中找不到的URL访问我的网站时触发并加载视图。我这样做是为了让访问者可以通过访问domain.com/username

来查看用户个人资料

由于用户名是动态的,我无法定义路由,如何完成我需要的触发?

2 个答案:

答案 0 :(得分:1)

您可以在路由器中处理:

 var myRouter = Backbone.Router.extend({
        routes: {
            '/:username': findUsername,
            '*path': notFound
        }
        findUsername: function(usernme) {
            //Find username
            //Username param comes from URL
        },
        notFound: function() {
            //Handle not found page
        }
    });

需要注意的是,当您的应用加载时,您需要使用{ pushState: true }

启动骨干历史记录
new myRouter();
Backbone.history.start({ pushState: true });

答案 1 :(得分:0)

你不能用Backbone这样做,因为它的路由器只在URL片段(哈希)上路由,而不是URL本身。使用HTML5历史记录API无法正常工作,因为这是对URL的直接导航。

这里唯一的选择是在服务器上进行路由,并提供包含所有Backbone客户端逻辑的页面。

你可能会对window.location.pathname进行攻击,但这不是最理想的,可能会导致比平常更多的眼泪。