1

私はこれについて多くのことを読んできましたが、多くの人を混乱させる問題のようです. 私はエクスプレスを使用してプロジェクトを行っていますが、魅力的なエンジンは必要ありません。アンダースコア付きのバックボーンを使用していますが、それで十分です。プレーンな HTML を記述してレンダリングしたい..

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set("view options", {layout: false});
  app.use(express.static(__dirname + '/views'));
  app.set('views', __dirname + '/views');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use( express.cookieParser() );
  app.use(express.session({ secret: 'topsecret' } ));
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

これは私がこれまでに持っているものです..これを持っていても、index.htmlファイルをホームページとしてレンダリングすることをエクスプレスがどのように知っているかを理解するのに苦労しています:

app.get('/', function(req, res){
    console.log("Heyyyyyy");
});

何もレンダリングされず、「Heyyyy」が出力されることを期待しますが、エクスプレスはindex.htmlをレンダリングし、「Heyyyy」を出力しません

4

1 に答える 1

3

Express は、構成されている順序でミドルウェアを評価します。

の前に静的ファイル ハンドラがありますapp.router

ディレクトリからindex.htmlファイルを取り出します__dirname + '/views'

また、ミドルウェア スタックの下部に静的ファイル ハンドラーがあります。静的ファイル ハンドラーは、ミドルウェア スタックの最上位にある必要があります。それらがミドルウェア スタックの一番下にある場合、各リクエストは不必要にすべてのスタックを処理します。たとえば、express.bodyParser()静的ファイルを提供するときに実行する必要はありません。

于 2013-06-12T20:25:43.360 に答える