내가 내 질문을 이끌어내는 과정을 안내해 줄 때 나를 참아주십시오.자바 스크립트 클래스를 사용할 수 있습니까 노드 모듈?
나는 노드에서 CLI 응용 프로그램에서 일하고 있어요 그리고 난이 패턴을 사용하여 내 비즈니스 로직을 캡슐화하는 객체를 사용하고 있습니다 :
// my-project/lib/widget/myobject.js
var MyObject = function(x) {
this.x = x;
};
MyObject.prototype.getX = function() {
return this.x;
};
module.exports = MyObject;
나는 또한 이러한 개체 테스트 해요 :
// my-project/test/lib/widget/myobject.spec.js
var MyObject = require('../../../lib/widget/myobject.js');
describe('MyObject', function() {
...
});
을
한순간에 내가 선택한 이름 지정 및 디렉토리 구조에 만족하지 않았습니다. 상대 경로를 다시 쓸 때 여러 사양 파일에서 해당 부모 디렉터리 참조 (..
)를 지루하게 계산했습니다. 나는이 객체 정의를 포함하는 루트 디렉토리를 참조하는 더 쉬운 방법이 있어야한다고 생각했다.
here의 권장 사항 중 하나는 "응용 프로그램 관련 모듈을 node_modules에 넣는"것입니다.
이제 모듈을 이해하면 npm에서 다운로드하여 내 프로젝트에서 사용하는 패키지입니다. 이 라이브러리에는 require
에 전화 할 때 내게 내보내는 단일 API로 유용한 라이브러리가 들어 있습니다. 이것은 내 응용 프로그램의 내부 사용을 위해 특별히 제작 된 단순한 단일 목적 클래스를 보는 방법이 아닙니다.
당신이 저와 지금까지 붙어 있다면, 고마워요! 내 질문은 다음과 같습니다.
내 응용 프로그램의 내부를 더 "모듈 식"으로 만들어 객체 지향적 인 상태에서 노드 모듈 시스템의 의도를 올바르게 따르도록하려면 어떻게합니까?
객체로 작업 할 때 노드에서 일반적으로 자산 폴더에서 저장하고 가져옵니다. 많은 것은 환경 설정에서 제외 된 환경 설정, 빌드 도구 및 배치에 따라 다릅니다. node_modules 메소드 또는 정적 애셋을 가져올 수있는 애셋 폴더보다 많거나 적다면 잘 작동합니다 (하지만 npm 애셋을 직접 작성한 애셋과 혼합하는 것은 권장하지 않습니다). –
맞아요, 정적 자산 폴더와 같지만 Node가 모듈을 찾는 기본 장소라는 추가적인 이점이 있습니다. 그것은 나를위한 무승부입니다. require ('../../../ lib/widget/myobject.js') 대신 require ('myobject')를 사용하고 싶습니다. 내 이해는 당신이 다음에 언급했던 것과 정확히 같습니다 : 공개 모듈을 비공개 모듈과 혼합합니다. 그게 내 질문을 자극했다. 나는 기본적으로 "나는이 일을 제대로하고 있는가? 아니면이 목적들에 더 합당한 다른 관례가 있는가?"라고 묻고있다. 섞는 것은 정말로 힘차게 느낍니다. – jkeeler