>  기사  >  웹 프론트엔드  >  nodejs_기본 지식에서 내보내기와 module.exports의 차이점에 대한 자세한 소개

nodejs_기본 지식에서 내보내기와 module.exports의 차이점에 대한 자세한 소개

WBOY
WBOY원래의
2016-05-16 17:43:411495검색

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에 설정된 속성을 내보냅니다.

다음 예에서 모듈은 클래스입니다.




코드 복사
코드는 다음과 같습니다. module.exports = function(name, age) { this.name = name; this.age = age;
this.about = function() {
console.log(this.name은 'this.age'입니다.')
}
}


다음과 같이 적용할 수 있습니다.


코드 복사

코드는 다음과 같습니다. var Rocker = require('./rocker.js' ); var r = new Rocker('Ozzy', 62); r.about(); // Ozzy는 62세입니다.
다음 예에서는 모듈이 배열입니다:



코드 복사

코드는 다음과 같습니다. module.exports = [ 'Lemmy Kilmister', 'Ozzy Osbourne', 'Ronnie James Dio', 'Steven Tyler', 'Mick Jagger'] 다음과 같이 적용할 수 있습니다.


코드 복사

이제 이해하셨겠지만, 모듈을 특정 유형으로 만들고 싶다면 Module.export를 사용하세요. 원하는 모듈이 고전적인 "인스턴스화된 개체"인 경우 내보내기를 사용하세요.

Module.exports에 속성을 추가하는 것은 내보내기에 속성을 추가하는 것과 유사합니다. 예:



코드 복사

코드는 다음과 같습니다. module.exports.name = function() { console.log('내 이름은 레미 킬미스터입니다')
마찬가지로 내보내기도 이렇습니다
코드 복사 코드는 다음과 같습니다.

imports.name = function() {
console.log('My name is Lemmy Kilmister');
};

이 두 결과는 동일하지 않습니다. 앞서 언급했듯이 module.exports는 실제 인터페이스이고, 내보내기는 보조 도구일 뿐입니다. 원래 "인스턴스화된 개체"를 유형으로 변경할 계획이 아니라면 내보내기를 사용하는 것이 좋습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.