2014-10-15 6 views
0

Express.js에는 express#Router 개체에 등록 된 미들웨어를 다시 주문하는 표준 방법이 있습니까? express.static()을 통해 앱에서 제공해야하는 정적 자산 디렉토리를 동적으로 등록 할 수있는 상황이 있습니다. 그러나 새로운 자산 디렉토리를 등록하는 데 사용하는 Router#use() 메소드는 항상 Router#stack 끝에 미들웨어를 넣습니다. 나는 이것이 처음에 있기를 바란다. 이것을 달성 할 수있는 방법이 있습니까?Express.js 라우터 미들웨어 재주문

기본적으로 현재 라우터의 stack을 역으로 가로 지르고 staticMiddleware이라는 첫 번째 미들웨어를 선택하고 그 위치에서 배열의 앞쪽으로 이동시키는 작업 구현이 있습니다. 이 기능은 작동하지만 내부적으로는 Route에 종속되어 있습니다. 동일한 행동을 달성하기위한 또 다른 표준 방법이 있기를 바랍니다.

답변

1

주문을 시작할 때 경로를 검사 할 수있는 맞춤 경로가 있어야하며 시간대에 따라 바꿀 수있는 디렉토리 목록과 비교 한 다음 정적 콘텐츠를 제공해야합니다. if 경로가 일치합니다.

이것은 단지 미리 정의 된 경로가 아닌 동적 경로 목록에서 작동하는 더 똑똑한 버전 express.static()입니다. express.static()에는 그리 많지 않으므로 기능에 복사하여 더 똑똑하게 만들 수 있습니다.


미들웨어 스택에 균열을 넣고 순서를 수정할 수 있습니다. 이 기능이 지원되는 기능인지 또는 사람들이 알아 내지 못한 지원되지 않는 기능인지는 알 수 없습니다 (나중에 중단 될 수 있음). 여기에 대해 설명하는 기사가 하나 있습니다 : https://www.exratione.com/2013/03/nodejs-abusing-express-3-to-enable-late-addition-of-middleware/

+0

내가 제안한 것처럼 _exending_'express.static()이 끝났습니다. 훌륭한 결과가 나왔습니다. 필자가 이전에 제시 한 해결책은 나열한 블로그 게시물에서 언급 한 것과 유사하지만 수정 된'express.static()'솔루션을 사용하기 위해 버렸습니다. 감사! – kodeninja