質問する前にapp.router
、少なくともミドルウェアを使用するときに何が起こると思うかを説明する必要があると思います。ミドルウェアを使用する場合、使用する関数はですapp.use()
。ミドルウェアが実行されているときは、を使用して次のミドルウェアを呼び出すか、next()
ミドルウェアが呼び出されないようにします。つまり、一部のミドルウェアは他のミドルウェアに依存しており、最後の方の一部のミドルウェアは呼び出されない可能性があるため、ミドルウェアを呼び出す順序が重要です。
今日、私は自分のアプリケーションで作業していて、サーバーをバックグラウンドで実行していました。いくつか変更を加えてページを更新し、変更をすぐに確認したかったのです。具体的には、レイアウトを変更していました。動作させることができなかったので、Stack Overflowで答えを検索し、この質問を見つけました。それexpress.static()
が下にあることを確認するように言っていますrequire('stylus')
。しかし、そのOPのコードを見ていたときapp.router
、彼がミドルウェアの呼び出しの最後に呼び出しを行っているのを見て、それがなぜであるかを理解しようとしました。
Express.jsアプリケーション(バージョン3.0.0rc4)を作成したとき、コマンドを使用し、app.jsファイルで、上記のと呼び出しの両方express app --sessions --css stylus
でコードがセットアップされました。したがって、すでにそのように設定されている場合は、そのままにしておく必要があるようです。app.router
express.static()
require('stylus')
スタイラスペンの変更を確認できるようにコードを再配置すると、次のようになります。
app.configure(function(){
//app.set() calls
//app.use() calls
//...
app.use(app.router);
app.use(require('stylus').middleware(__dirname + '/public'));
app.use(express.static(__dirname + '/public', {maxAge: 31557600000}));
});
app.get('/', routes.index);
app.get('/test', function(req, res){
res.send('Test');
});
app.router
そこで、最初のステップは、コードに含めることが重要である理由を見つけることであると判断しました。それで、コメントアウトしてアプリを起動し、に移動しました/
。インデックスページがうまく表示されました。うーん、ルートファイル(routes.index)からルーティングをエクスポートしていたので、うまくいったかもしれません。次に、に移動する/test
と、画面に「テスト」と表示されました。ハハ、わかりました、私は何をするのか分かりapp.router
ません。それが私のコードに含まれているかどうかにかかわらず、私のルーティングは問題ありません。だから私は間違いなく何かが欠けています。
だからここに私の質問があります:
誰かが何をするのかapp.router
、それの重要性、そしてミドルウェアの呼び出しのどこにそれを置くべきかを説明してもらえますか?について簡単に説明してもらえたら嬉しいですexpress.static()
。私の知る限り、これexpress.static()
は私の情報のキャッシュであり、アプリケーションが要求されたページを見つけられない場合は、キャッシュをチェックして存在するかどうかを確認します。