가장 좋은 방법은 다음과 같습니다. 모듈을 개별적으로 테스트 할 수 있습니까? 모듈을 요구하고 테스트 케이스에서 함수를 호출 할 수 있습니까? 모듈이 다른 모듈에 종속되어 있다면 테스트를 위해 가짜 모듈을 조롱하는 것이 얼마나 어렵습니까?
테스트 가능성은 우려를 잘 분리하는 가장 좋은 지표입니다. 실제로 모듈을 필요로한다면 모듈에 10 개의 다른 모듈이 필요하면 괜찮습니다. 저는 실제로 시험을 치르는 데 시간을 할애하지 않을지라도 항상 마음의 뒤쪽에서 시험 가능성을 유지할 것입니다.
개방형 테스트 옵션을 유지하는 것만 큼 좋지 않으며 모듈이 특화된 방법에 대한 유용한 가이드입니다. 세 개의 모듈이 있고 다른 두 개없이 하나를 사용할 수 없다면 아마도 한 모듈에 속할 것입니다. 또는 세 개의 모듈이 분리되어있는 동안 탐색하기 쉽고 크기가 클 수도 있습니다. 그 시나리오에서 저는 보통 래퍼 모듈을 만듭니다.
나는 관련 이름을 가진 디렉토리를 만들고 거기에 다른 세 모듈 (또는 필요한 것은 무엇이든)이 필요한 파일을 index.js
에 던집니다. 그런 다음 내 응용 프로그램의 나머지 부분에서 내부적으로 복잡하고 여러 하위 모듈로 분리되어 있지만 하나의 특수 API 인 것처럼 해당 모듈에 액세스 할 수 있습니다. 래퍼 모듈은 API의 단순성을 유지하면서도 모듈화가 가능하도록 나머지 앱에서 그 엉망을 숨 깁니다. 그것은 하나의 모듈에 물건을 결합하는 것이 너무 지저분하고 모듈을 활용하는 상황에서 큰 문제를 해결할 수있는 방법입니다.
(가능한 한 일반적으로 목표로 삼는) 모듈이 일반적이면 NPM에 독립형 모듈로 게시하는 경우가 많습니다. 그런 다음 NPM의 다른 모듈과 마찬가지로 프로젝트에서 요구할 것입니다. 예를 들어, 모든 내 몽구스 모델을 하나의 db
개체에로드하여 쉽게 액세스 할 수있는 스크립트를 작성했습니다. 코드는 내 프로젝트의 루트에있는 dbmodels
디렉토리에있는 mongodb 모델 파일을 반복합니다. 모듈이 필요하고, 모델 데이터를 몽구스로 등록하고, 사용할 수있는 간단한 db
개체 (예 : db.User.findOne({ username: 'munkee' }, function (err, user) { ... }
)를 생성하십시오.
내가 만든 모든 프로젝트에 똑같은 코드를 계속해서 복사하는 대신 mongoose-simpledb이라는 일반 NPM 모듈을 만들었습니다. the code for that module을 보면 매우 복잡하지 않다는 것을 알 수 있습니다. 일반적이고 유용하지만 NPM 레지스트리에 자신의 장소가 될 가치가 있다고 생각합니다. 그것은 새로운 프로젝트에서 훨씬 더 쉽게 만들었습니다.유용한 정보를 찾는 다른 사람들은 단지 즐거운 보너스입니다.
시간을내어 작성해 주셔서 감사드립니다. 나는 노드에 매우 익숙하지만 다른 언어 (비 js)에서의 경험을 통해 상황이 조금 어색해 지거나 "해킹"될 때 느낌을 자주 얻습니다. 래퍼는 실제로 다른 모듈을 조금 더 잘 나눌 수있는 곳을 볼 수 있습니다. 귀하의 의견을 염두에두고 전반적인 내 앱을 다시 살펴 보겠습니다. 다음은 현재 진행중인 프로젝트입니다 : https://github.com/Hardware-Hacks/node-p3negram 전보 메신저 <---> irc – munkee
행운을 빈다! 우리가 여기서 완벽한 세계를 이야기하고 있다는 것을 기억하십시오. 때때로 "해킹"을 느끼지 않는 해결책은 없지만 점점 더 많은 모듈이 우리에게 더 힘들고 어려운 문제를 해결할수록 노드의 과거의 문제가되고 있습니다. 어쨌든 재미있는 프로젝트처럼 보입니다. :) – Chev