微信小程式中module.exports與exports的用法可以查看下面官方提供的文檔,使用起來還是比較簡單方便的,但時對於這兩者的區別解釋的不是很明白。
為了更好的理解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 指向同一塊記憶體位址,所以前兩個輸出一樣。
當 b 修改時,即 a 和 b 指向同一塊記憶體位址的內容發生了改變,所以 a 也會體現出來,所以第三四個輸出一樣。
當對b 完全覆蓋時,b 就指向了一塊新的記憶體位址(並沒有對原先的記憶體區塊作修改),a 還是指向原來的記憶體區塊,即a 和b 不再指向同一塊記憶體,也就是說此時a 和b 已毫無關係,所以最後兩個輸出不一樣。
明白了上述例子後,我們進入正題。我們只要知道三點就知道exports 和module.exports 的差異了:
exports 是指向的module.exports 的引用;
#module.exports 初始值為一個空物件{},所以exports 初始值也是{};
-
require() 回傳的是module.exports 而不是exports。
所以:我們透過var name = '张三'; exports.name = name; exports.sayName = function() { console.log(name); }
給exports 賦值其實是為module.exports 這個空物件增加了兩個屬性而已,上面的程式碼相當於:
var name = '张三'; module.exports.name = name; module.exports.sayName = function() { console.log(name); }
下面就在微信小程式中module.exports和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 指向新的物件時,exports 斷開了與module.exports 的引用,module.exports 指向了新的記憶體區塊,而exports 還是指向原始的記憶體區塊。
因此,在不是很清楚兩者關係的時候,請採用module.exports來暴露接口,而盡量不採用exports暴露接口。
以上是微信小程式中module.exports和exports的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
視覺化網頁開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中