질문하기 전에 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
하여 화면에 테스트를 표시했습니다. 하하, 알 겠어 app.router
. 코드에 포함되어 있는지 여부에 관계없이 라우팅이 좋습니다. 그래서 나는 분명히 뭔가를 놓치고 있습니다.
내 질문은 다음과 같습니다.
누군가가 무엇을 app.router
, 그것의 중요성 및 미들웨어 호출에서 어디에 배치 해야하는지 설명해 주 시겠습니까? 에 대한 간단한 설명이 있으면 좋을 것 express.static()
입니다. 내가 알 수 express.static()
있는 한 내 정보의 캐시이며 응용 프로그램이 요청한 페이지를 찾을 수 없으면 캐시가 존재하는지 확인합니다.