Javascript 为具有pushState的主干SPA配置node express

Javascript 为具有pushState的主干SPA配置node express,javascript,node.js,express,backbone.js,url-routing,Javascript,Node.js,Express,Backbone.js,Url Routing,我的express应用程序有一个rest服务器和一个使用主干网的SPA。使用#历史,即 Backbone.history.start(); 如果我这样做: Backbone.history.start({ pushState: true }); 主干路由器停止工作-主干处理良好的路由(例如#路由)在变为/route时被发送到Express。用以下语句表示错误: Cannot GET /route 我试过: Backbone.history.start({ pushState: true,

我的express应用程序有一个rest服务器和一个使用主干网的SPA。使用#历史,即

Backbone.history.start();
如果我这样做:

Backbone.history.start({ pushState: true });
主干路由器停止工作-主干处理良好的路由(例如#路由)在变为/route时被发送到Express。用以下语句表示错误:

Cannot GET /route
我试过:

Backbone.history.start({ pushState: true, root '/' });
但没有区别

我还尝试:

app.use('/*', function ...
在Express中-没有区别

express server.js:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');

app.use(express.static(__dirname + '/public'));

app.get('/', function(req, res){
  res.render('index.ejs');
});

var rest = require('./routes/rest');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.use('/rest', rest);

app.listen(3000);
主干路由器(稍微精简):


我不需要任何搜索引擎优化,我只想拍下应用程序路由中的那些“#”。

我认为路由器工作正常。当您从浏览器而不是应用程序直接调用
/index.html/someroute
时,它“不起作用”

要处理好这件事,你必须在快车上接住它

app.get('*', function...)
应该有用

务必先声明另一条路由(如
/rest
),否则它将在到达
'/rest'
之前被
'*'
捕获。这是由于express使用的中间件模式(只是提醒您可能已经知道这一点)


希望有帮助

是的,就是这样-只需要确保我现在捕捉到所有关于HREF的点击()
app.get('*', function...)