主干路由,应用程序在/profile内部启动

Backbone routes, the application starts inside /profile?

本文关键字:profile 内部 启动 应用程序 路由      更新时间:2023-09-26

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

这部分都是服务器端,在我看来,此时不需要backbone.js。

然后最后用户成功登录到应用程序,它开始于/profile,这是我包括骨干和我的javascript,这里是我更多地依赖于客户端路由和逻辑,因为用户被批准播放,并被授予访问权限。

现在在这里有点无聊,但我的问题是,既然我的应用程序在/profile内启动,为什么路由器会被劫持?例如,我有一个chat路由,并调用此路由url不尊重尾斜杠localhost:3000/profile#chat工作,但不是这个localhost:3000/profile/#chat

我读了这个Backbone.js路由可选参数,我试图逆转语法,但没有运气。

这是我的路线

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

所以从服务器创建的/profile路由开始,我如何获得尾随斜杠的工作?

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

使用express服务/profile路由:

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

然后在前端,你的主干。Router处理从此处开始的所有路由:

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

最后,记得在你的路由器和所有路由被定义之后调用Backbone.history.start()来开始监控哈希值的变化。