nodejs 모듈의 내보내기 개체에 대해 잘 알고 있어야 하며 이를 사용하여 모듈을 만들 수 있습니다. 예: (rocker.js 파일이라고 가정)
exports .name = function() {
console.log('My name is Lemmy Kilmister')
};
인용한 다른 파일에서
var rocker = require('./rocker. js');
rocker.name(); // '내 이름은 Lemmy Kilmister'
그럼 Module.exports가 정확히 무엇인가요? 합법적인가요?
사실 Module.exports가 실제 인터페이스이고, 내보내기는 이를 위한 보조 도구일 뿐입니다. 호출에 궁극적으로 반환되는 것은 내보내기 대신 Module.exports입니다.
내보내기로 수집된 모든 속성과 메서드는 Module.exports에 할당됩니다. 물론 이에 대한 전제가 있습니다. 즉, Module.exports 자체에는 속성과 메서드가 없습니다. Module.exports에 이미 일부 속성과 메서드가 있는 경우 내보내기로 수집된 정보는 무시됩니다.
rocker.js를 다음과 같이 수정하세요.
module.exports = '좋아요!';
exports.name = function() {
console.log('제 이름은 레미 킬미스터입니다')
};
rocker.js를 다시 참조하고 실행
var rocker = require( './rocker.js');
rocker.name(); // TypeError: Object ROCK IT!에는 'name' 메소드가 없습니다. 오류 발견: 개체 "ROCK IT!" 이름 메서드가 없습니다
로커 모듈은 내보내기로 수집된 이름 메서드를 무시하고 "ROCK IT!" 문자열을 반환합니다. 따라서 모듈이 반드시 "인스턴스화된 개체"를 반환할 필요는 없습니다. 모듈은 부울, 숫자, 날짜, JSON, 문자열, 함수, 배열 등 합법적인 JavaScript 개체일 수 있습니다.
모듈은 무엇이든 설정할 수 있습니다. Module.exports에 속성과 메서드를 명시적으로 설정하지 않으면 모듈은 Module.exports에 설정된 속성을 내보냅니다.
다음 예에서 모듈은 클래스입니다.
코드 복사
this.about = function() {
console.log(this.name은 'this.age'입니다.')
}
}
다음과 같이 적용할 수 있습니다.
코드 복사
다음 예에서는 모듈이 배열입니다:
코드 복사
코드 복사
이제 이해하셨겠지만, 모듈을 특정 유형으로 만들고 싶다면 Module.export를 사용하세요. 원하는 모듈이 고전적인 "인스턴스화된 개체"인 경우 내보내기를 사용하세요.
Module.exports에 속성을 추가하는 것은 내보내기에 속성을 추가하는 것과 유사합니다. 예:
코드 복사