>  기사  >  위챗 애플릿  >  WeChat 미니 프로그램에서 module.exports와 내보내기의 차이점

WeChat 미니 프로그램에서 module.exports와 내보내기의 차이점

PHPz
PHPz원래의
2017-04-04 11:46:521830검색

WeChat 애플릿에서 module.exports 및 내보내기 사용에 대해서는 아래 공식 문서를 확인하실 수 있습니다. 비교적 간단하고 사용하기 편리하지만 둘의 차이점은 그다지 명확하지 않습니다. .

WeChat 미니 프로그램에서 module.exports와 내보내기의 차이점

WeChat 애플릿 공식 문서--프레임워크--로직 레이어--모듈화.png

내보내기와 module.exports의 관계를 더 잘 이해하기 위해 먼저 몇 가지 js 기본 사항을 다루겠습니다. 예:

// index.js
Page({
    onLoad: function(){
        var a = {name: '张三'};
        var b = a;
        console.log(a);
        console.log(b);

        b.name = '李四';
        console.log(a);
        console.log(b);

        var b = {name: '王五'};
        console.log(a);
        console.log(b);
    }
})

app.js 실행 결과:

{ name: '张三' }
{ name: '张三' }
{ name: '李四' }
{ name: '李四' }
{ name: '李四' }
{ name: '王五' }

설명:
a는 객체이고, b는 참조, 즉 a와 b는 동일한 객체를 가리킵니다. 즉, a와 b는 동일한 메모리 주소를 가리키므로 처음 두 출력은 동일합니다. b가 수정되면, 즉 동일한 메모리 주소를 가리키는 a와 b의 내용이 바뀌므로 a도 반영되므로 세 번째와 네 번째 출력은 동일합니다.
b가 완전히 덮이면 b는 새 메모리 주소를 가리키고(원래 메모리 블록은 수정되지 않음) a는 여전히 원래 메모리 블록을 가리킵니다. 즉, a와 b는 더 이상 동일한 메모리 블록을 가리키지 않습니다. 즉, 이때 a와 b는 서로 아무런 관련이 없으므로 마지막 두 출력이 다릅니다.

위의 예를 이해한 후 본론으로 들어가겠습니다. 내보내기와 module.exports의 차이점을 알기 위해서는 세 가지 사항만 알면 됩니다.

  • exports는 module.exports에 대한 참조입니다.

  • module.exports의 초기 값은 빈 객체 {}이므로 내보내기의 초기 값도 {}입니다.

  • require()는 모듈을 반환합니다. 수출이 아닙니다. 따라서

    var name = '张三';
    exports.name = name;
    exports.sayName = function() {
      console.log(name);
    }
    를 통해 내보내기에 값을 할당할 때 실제로는 빈 개체 module.exports에 두 개의

    속성을 추가합니다. 위 코드는 과 동일합니다.

    var name = '张三';
    module.exports.name = name;
    module.exports.sayName = function() {
       console.log(name);
    }
다음은 WeChat 미니 프로그램에서 module.exports와 내보내기의 차이점을 보여주는 예입니다

// common.js 
function sayHello(name) {
    console.log(`Hello ${name} !`);
}
function sayGoodbye(name) {
    console.log(`Goodbye ${name} !`);
}
// 第一种情况,module.exports初始值为空对象,两个函数使用module.exports或exports都一样效果
module.exports.sayHello = sayHello;
module.exports.sayGoodbye = sayGoodbye; 
exports.sayHello = sayHello;
exports.sayGoodbye = sayGoodbye; 

// 第二种情况,module.exports初始值不为空对象,只能使用module.exports暴露接口,而不能使用exports暴露,会出现is not a function错误。
module.exports = {name:1};// module.exports给一个初始值

//以下两个正常使用
module.exports.sayHello = sayHello;  
module.exports.sayGoodbye = sayGoodbye;

//使用以下两个会报错误sayHello is not a function
exports.sayHello = sayHello;  
exports.sayGoodbye = sayGoodbye;
요약하면 module.exports가 새로운 객체를 가리킬 때, 내보내기는 연결 끊김 module.exports에 대한 참조가 없으면 module.exports는 새 메모리 블록을 가리키는 반면, 내보내기는 여전히 원래 메모리 블록을 가리킵니다.

따라서 둘 사이의 관계가 명확하지 않은 경우 module.exports를 사용하여 인터페이스를 노출하고, 내보내기를 사용하여 인터페이스를 노출하지 마십시오.

위 내용은 WeChat 미니 프로그램에서 module.exports와 내보내기의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.