2016-06-09 7 views
0

나는 노드, npm에 몇 가지 문제를 겪고 있으며 패키지 구조를 파악하려고 노력하고 있으며 Google에 무엇이 있는지 잘 모르겠습니다. 나는 npm 패키지를 가져 오는 방법에 관해서 일반적인 관습을 찾아 내려고 노력해왔다.NPM 패키지 로컬 VS 글로벌 범위

저는 최근에 노드에 작은 웹 서버를 작성했으며, 요청 처리를 위해 HttpDispatcher을 사용했습니다. 문제는 하나 이상의 HttpDispatcher '객체를 만들려고 할 때 발생합니다.' 내가 할 때, 실제로 새로운 것을 만들지 않고 대신 내가 만든 첫 번째 것을 계속 사용합니다.

저는 일반적으로 Javascript와 Node에 처음으로 익숙합니다. 그러나 루프 내에서 익명 함수 (익명으로 생각하는 것)를 작성하는 문제가 과거에는 없었습니다. 의도대로. 따라서, 나는 여러개의 인스턴스를 갖는 패키지가 일반적으로 어떻게 사용되는지를 정말로 알고 싶다.

나는 HttpDispatcher '객체'글로벌 (앞의 VAR 키워드를 제거함으로써 내 문제를 해결했습니다.이 실제로 예상대로 새로운 객체를 생성합니다. 나는이 있지만, 적절한 아니라고 걱정 해요.

npm 패키지에서 선언 된 개체를 선언/초기화/내보내기하는 적절한 방법은 무엇입니까? 문제가있는이 패키지 작성자에게 제안 요청 또는 제안을 제출해야합니까?

많이 감사합니다.

답변

2

네 말이 맞아, 당신은 대신 인스턴스 수출의, HttpDispatchermodule의 끝에서 HttpDispatcher 모듈

의 작성자에게 문의해야합니다

module.exports = new HttpDispatcher(); 

이 저자는 생성자 자체를 내보낼 수, 그리고

module.exports = HttpDispatcher; 
+2

(이 답변으로 펀치를 때리는 이유는 무엇입니까?) - 노드에서 한 번만 가져온 경우에만 확장 할 수 있습니다. , 인스턴스 가져 오기 캐시되므로 이후의 가져 오기는 동일한 객체를 반환합니다. https://nodejs.org/api/modules.html#modules_caching을 참조하십시오. –

+0

굉장! 이것이 내가 궁극적으로 처음부터 끝내는 것입니다. 모듈을 수출하는 데 '표준'이 무엇인지 확신 할 수 없었습니다. 도와 주셔서 감사합니다! – FizzyGalacticus