반응형
필요한 인수 전달(모듈 로드 시)
require를 사용하여 모듈을 로드할 때 인수를 전달할 수 있습니까?
로그인 기능을 제공하는 login.js 모듈이 있습니다.데이터베이스 연결이 필요하고 모든 모듈에서 동일한 데이터베이스 연결을 사용하기를 원합니다.이제 함수 로그인을 내보냅니다.데이터베이스 연결을 지정할 수 있는 setDatabase(...)이며, 이는 정상적으로 작동합니다.하지만 저는 모듈을 로드할 때 데이터베이스와 다른 요구사항을 통과하고 싶습니다.
var db = ...
var login = require("./login.js")(db);
저는 NodeJS를 처음 접했고 보통 Java와 Spring Framework를 사용하여 개발하기 때문에 그렇습니다.컨스트럭터 인젝션 입니다 :) 위에 제시한 코드와 같은 작업이 가능한가요?
이 답변에 대한 귀하의 의견을 토대로, 저는 귀하가 하려는 일을 다음과 같이 합니다.
module.exports = function (app, db) {
var module = {};
module.auth = function (req, res) {
// This will be available 'outside'.
// Authy stuff that can be used outside...
};
// Other stuff...
module.pickle = function(cucumber, herbs, vinegar) {
// This will be available 'outside'.
// Pickling stuff...
};
function jarThemPickles(pickle, jar) {
// This will be NOT available 'outside'.
// Pickling stuff...
return pickleJar;
};
return module;
};
저는 거의 모든 모듈을 그렇게 구성합니다.저한테 잘 맞는 것 같네요.
이것이 여전히 사람들에게 유용할지는 잘 모르겠지만 ES6를 사용하면 깨끗하고 유용한 방법을 찾을 수 있습니다.
class MyClass {
constructor ( arg1, arg2, arg3 )
myFunction1 () {...}
myFunction2 () {...}
myFunction3 () {...}
}
module.exports = ( arg1, arg2, arg3 ) => { return new MyClass( arg1,arg2,arg3 ) }
그리고 예상되는 행동을 하게 됩니다.
var MyClass = require('/MyClass.js')( arg1, arg2, arg3 )
네. 당신의.login
모듈, 단지 다음을 수행하는 단일 함수를 내보냅니다.db
그 논거로서예를 들어,
module.exports = function(db) {
...
};
언급URL : https://stackoverflow.com/questions/13151693/passing-arguments-to-require-when-loading-module
반응형
'it-source' 카테고리의 다른 글
장고에서 X 편집 가능한 인라인 편집 - CSRF 보호를 받는 방법은? (0) | 2023.09.08 |
---|---|
자바스크립트에서 단어를 자르지 않고 문자열을 단축합니다. (0) | 2023.09.08 |
Android 앱에서 Excel 파일 보기 (0) | 2023.09.08 |
Android Studio에서 Parameterized Unit 테스트를 실행할 때 오류가 발생한 테스트가 없습니다. (0) | 2023.09.08 |
기본 도커 레지스트리를 docker.io 에서 개인 레지스트리로 변경하는 방법은 무엇입니까? (0) | 2023.09.08 |