因此,在用户登录应用程序之前,我不会使用任何骨干逻辑。因此,对于使用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
路由开始,如何使尾部斜杠起作用?
答案 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()
,并且已定义所有路由以开始监视哈希更改。