ホームページ > WeChat アプレット > ミニプログラム開発 > module.exports と WeChat ミニ プログラムのエクスポートの違い

module.exports と WeChat ミニ プログラムのエクスポートの違い

PHPz
リリース: 2017-04-04 11:46:52
オリジナル
1916 人が閲覧しました

WeChatミニプログラムでのmodule.exportsとexportsの使用法については、以下の公式ドキュメントを確認してください。比較的シンプルで使いやすいですが、現時点では2つの違いはあまり明確ではありません。

module.exports と WeChat ミニ プログラムのエクスポートの違い

WeChat ミニプログラム公式ドキュメント--Framework--論理層--モジュール化.png

exports と 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 への 参照、つまり、a と b は同じオブジェクトを指します。 、a と b は同じオブジェクト A メモリ アドレスを指しているため、最初の 2 つの出力は同じです。
bが変更されると、つまり同じメモリアドレスを指すaとbの内容が変化するので、aも反映されるので、3番目と4番目の出力は同じになります。
b が完全にカバーされると、b は新しいメモリ アドレスを指します (元のメモリ ブロックは変更されません)。a は依然として元のメモリ ブロックを指します。つまり、a と b は同じメモリ ブロックを指しなくなります。現時点では a と b は無関係であるため、最後の 2 つの出力は異なります。

上記の例を理解したら、本題に入りましょう。 exports と module.exports の違いを知るために必要な点は 3 つだけです。

  • exports は module.exports への参照です。

  • module.exports の初期値は空のオブジェクト {} であるため、exports は初期値も {} です。

  • require() は、exports の代わりに module.exports を返します。
    つまり:

    var name = '张三';
    exports.name = name;
    exports.sayName = function() {
      console.log(name);
    }
    ログイン後にコピー

    を介してエクスポートに値を割り当てると、実際には空のオブジェクト module.exports に 2 つの attributes が追加されます。上記のコードは次と同等です。

    var name = '张三';
    module.exports.name = name;
    module.exports.sayName = function() {
       console.log(name);
    }
    ログイン後にコピー

以下は、 WeChat アプレット エクスポートとエクスポートの違いの例

// 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 が新しいオブジェクトを指す場合、exports は module.exports への参照を中断し、module.exports は新しいメモリ ブロックを指し、exports は静止ポイントを指します。元のメモリブロックへ。
したがって、両者の関係が明確でない場合は、module.exports を使用してインターフェースを公開し、exports を使用してインターフェースを公開しないようにしてください。

以上がmodule.exports と WeChat ミニ プログラムのエクスポートの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート