2012-07-18 2 views
1

는 최근에 나는 다음과 같은 문제를 우연히 발견 한 명시 적으로 작업을 시작 데). 위의패스 추가 매개 변수 (expressjs는)

app.get('/', routes.home) etc. 

라인은 다음 & 입술, 매개 변수 REQ 호출 함수가 routes.home 것을 의미 다음과 같이 각각의 GET/포스트 일치 수행됩니다.

나는 모든 경로에 액세스 할 수 있도록 utils 개체에 저장된 유틸리티 함수를 많이 가지고 있습니다.

var utils = ... 

app.get('/', function (req, res, next) { 
    routes.home(req, res, next, utils); 
}); 

는 유틸 모든 경로 또는 일반적으로 내 문제에 더 나은 솔루션에 매개 변수로 객체를 전달해야한다는 표현 말할 수있는 방법이 있나요 : 다음과 같이 지금까지 나는 문제를 해결 했어요?

+1

표준 방법은 경로 파일을 사용하여 유틸리티를 가져와야합니다. 네가 그렇게하지 않는 이유가 있니? – JohnnyHK

답변

2

나는 JohnnyHK에 동의합니다. 또한 res와 req를 두 번 전달해야하는 이유는 무엇입니까? 왜 앱 파일에서이 작업을 수행하지 :

app.get('/', routes.home); 

그리고 다음을이처럼 필요한 파일 뭔가 : 모든 해답에 대한

var utils = require('utils') 
exports.home = function(req, res){ 
    //code 
} 
+0

내가이 방법을 선택한 이유는 utils에 오직 하나의 인스턴스 만 사용할 수있는 특정 모듈 (예 : 저장소)이 포함되어 있기 때문입니다. 그렇지 않은 경우 위에서 설명한 절차를 계속 수행 할 것입니다. –

+0

노드 docs : 모듈은 처음로드 된 후 캐시됩니다. 이것은 (다른 것들 중에서) require ('foo')에 대한 모든 호출은 동일한 파일로 해석 될 경우 정확하게 반환 된 동일한 객체를 가져올 것임을 의미합니다. – jabbermonkey

+1

And : 모듈에 코드를 여러 번 실행하려면 함수를 내 보낸 다음 해당 함수를 호출하십시오. – jabbermonkey

0

감사합니다. 내가 utils 모듈에 갖고 싶었던 경로에 "init (utils)"함수를 호출하여 내 문제에 대한 해결책을 찾았습니다.