3

BackboneとpushStateで動作するようにExpressをセットアップしようとしていますが、ルーティングを処理する方法がわかりません。をURLに挿入して未定義のルートを処理するミドルウェア関数( https://gist.github.com/3402977に基づく)を追加しようとしました#が、ミドルウェアが呼び出されないようです。

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/fooBackboneがパーマリンクなどのルーティングを処理できるようにリダイレクトしたいと思います。私は何が欠けていますか?

4

1 に答える 1

1

app.use(app.router);ここに着陸する将来の世代のために: 答えは、彼のミドルウェアは一線を画す前にあるべきだということです。

于 2013-02-28T01:24:00.943 に答える