国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

node.js中module.exports與exports用法上的區別

2019-11-20 09:06:15
字體:
來源:轉載
供稿:網友

 Node.js 引入了模塊(Module)概念,一個模塊可以通過module.exports 或 exports 將函數、變量等導出,以使其它 JavaScript 腳本通過require() 函數引入并使用。 

module.exports 初始值為一個空對象 {},所以 exports 初始值也是 {},exports 是指向的 module.exports 的引用,在模塊內部大概是這樣:

exports = module.exports = {};

舉個栗子,在node.js中創建模塊非常簡單,一個文件就是一個模塊,所以我們創建一個name.js文件就創建了一個模塊name.js,使用exports和require對象對外提供接口和引用模塊。

name.js

var myName=function(){var name='AmberYLopez';console.log(name);};exports.myName=myName;

這樣在使用的時候需要這樣

app.js

var name=require('./name');

如果我們創建的name.js文件是使用module.exports和require對象對外提供接口和引用模塊。

name.js 

var myName=function(){var name='AmberYLopez';console.log(name);};module.exports=myName;

app.js

var name=require('./name');

exports 賦值其實是給 module.exports 這個空對象添加myName屬性而已,為什么exports要使用添加屬性的方式,而不用exports=myName?

exports是引用 module.exports的值。exports 被改變的時候,module.exports不會被改變,而模塊導出的時候,真正導出的執行是module.exports,而不是exports。

如果將name.js改為

var myName=function(){var name='AmberYLopez';console.log(name);};exports=myName;

app.js

var name=require('./name');<br>console.log(name);

運行會報錯。因為,前面是通過給 exports 添加屬性,而現在對 exports 指向的內存做了修改,exports 和 module.exports 不再指向同一塊內存,即 module.exports 指向的那塊內存并沒有做任何改變,仍然為一個空對象 {},所以會報錯。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 商河县| 高碑店市| 重庆市| 兴山县| 黄山市| 河池市| 武宣县| 鹤峰县| 济源市| 太白县| 莱芜市| 云和县| 永平县| 乐至县| 尚义县| 两当县| 安西县| 新平| 鄂尔多斯市| 原阳县| 隆安县| 涟源市| 绍兴市| 定远县| 马尔康县| 孟州市| 高阳县| 年辖:市辖区| 紫云| 平果县| 平邑县| 九江市| 郓城县| 锦屏县| 华池县| 大理市| 武邑县| 新邵县| 彰武县| 日喀则市| 鲁山县|