WeChatミニプログラムでのmodule.exportsとexportsの使用法については、以下の公式ドキュメントを確認してください。比較的シンプルで使いやすいですが、現時点では2つの違いはあまり明確ではありません。
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 サイトの他の関連記事を参照してください。