質問する前にapp.router
、少なくともミドルウェアを使用しているときに何が起こると思うかについて説明する必要があると思います。ミドルウェアを使用するには、使用する機能はapp.use()
です。ミドルウェアの実行中は、次のミドルウェアを使用して呼び出すか、next()
ミドルウェアが呼び出されないようにします。つまり、一部のミドルウェアは他のミドルウェアに依存しており、最後の部分のミドルウェアは呼び出されない場合があるため、ミドルウェアを呼び出す順序は重要です。
今日、私は自分のアプリケーションに取り組んでおり、サーバーをバックグラウンドで実行していました。変更を加えてページを更新し、変更をすぐに確認したいと思っていました。具体的には、レイアウトを変更していました。私はそれを動作させることができなかったので、答えを求めてスタックオーバーフローを検索し、この質問を見つけました。それexpress.static()
が下にあることを確認するように言っていますrequire('stylus')
。しかし、そのOPのコードを見ているとapp.router
、ミドルウェアの呼び出しの最後に彼の呼び出しがあることがわかりました。その理由を理解しようとしました。
Express.jsアプリケーション(バージョン3.0.0rc4)を作成したとき、コマンドを使用express app --sessions --css stylus
し、app.jsファイルで、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
と、画面にTestが表示されました。はは、わかりましたapp.router
。何ができるかわかりません。コードに含まれているかどうかにかかわらず、ルーティングは問題ありません。だから私は間違いなく何かを逃しています。
だからここに私の質問があります:
誰かが何をするかapp.router
、その重要性、そしてミドルウェア呼び出しのどこに配置するべきかを説明してもらえますか?また、について簡単な説明をいただければ幸いですexpress.static()
。私の知る限りでexpress.static()
は、私の情報のキャッシュであり、アプリケーションが要求されたページを見つけることができない場合、キャッシュをチェックして、存在するかどうかを確認します。