我正在尝试将 Express 设置为与 Backbone 和 pushState 一起使用,但我不确定如何处理路由。我尝试添加一个中间件函数(基于https://gist.github.com/3402977)通过将 插入到 url 来处理任何未定义的路由#
,但似乎中间件永远不会被调用:
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('yadda yadda'));
app.use(express.session());
app.use(app.router);
// This should handle undefined routes.
app.use(function(err, req, res, next){
// Isn't getting called.
newUrl = req.protocol + '://' + req.get('Host') + '/#' + req.url;
res.redirect(newUrl);
});
app.use(express.static(path.join(__dirname, 'public')));
});
目前,每当我访问我没有在 Express ( http://localhost:3000/test/foo
) 中定义的路线时,它都会给我一个Could not GET /test/foo
错误。我希望它重定向到,http://localhost:3000/#/test/foo
以便 Backbone 可以处理永久链接等的路由。我错过了什么?