骨干路由,应用程序在/ profile中启动?

时间:2014-03-25 23:08:52

标签: javascript backbone.js url-routing

因此,在用户登录应用程序之前,我不会使用任何骨干逻辑。因此,对于使用node.js,应用程序在localhost:3000上启动,服务器处理此部分中的路由。例如,在访问localhost:3000之后,有两个选项,注册登录,表示处理此工程,并且一个简单的routes.js文件处理这些路线的逻辑。 /signup/login

那部分是服务器端,我认为此时不需要backbone.js。

然后最终用户成功登录到应用程序,该应用程序从/profile开始,这是我包含主干和我的javascripts的地方,这里我更依赖客户端路由和逻辑,因为用户被批准玩,并被授予访问权限。

现在这里有点吵闹,但我的问题是,因为我的应用程序在/profile内启动,为什么路由器会被抬高?例如,我有一个chat路线,并且要调用此路线,网址不会受到尾部斜杠localhost:3000/profile#chat的影响但不是localhost:3000/profile/#chat

我读了这个Backbone.js route optional parameter我尝试颠倒语法但没有运气。

这是我的路线

module.exports = Router = Marionette.AppRouter.extend({
    appRoutes: {
        ''  : 'home',
        '(/:)chat' : 'chat' // tried playing around here
    }
});

因此,从服务器创建的/profile路由开始,如何使尾部斜杠起作用?

1 个答案:

答案 0 :(得分:0)

Backbone是一个前端JS框架,完全独立于您的node / express后端。就路由而言,它们不共享任何逻辑。

使用express来提供/ profile路由:

app.get('/profile', function(req, res){
  res.render('profile', {somedata:'somevalue'}); // etc..
});

然后在fronend上,你的Backbone.Router处理从那里开始的任何路由:

var myRouter = Backbone.Router.extend({
  routes: {
    '/' : 'profile', // Actually '/profile/
    '/chat' : 'chat' // Actually '/profile/chat
  }
});

最后,请记住在路由器之后调用Backbone.history.start(),并且已定义所有路由以开始监视哈希更改。