国产探花免费观看_亚洲丰满少妇自慰呻吟_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 指向的那塊內存并沒有做任何改變,仍然為一個空對象 {},所以會報錯。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辽宁省| 额济纳旗| 昭觉县| 宜章县| 廉江市| 梁河县| 红原县| 紫云| 黔江区| 榆树市| 灌阳县| 措美县| 砀山县| 郴州市| 新郑市| 延川县| 津市市| 合肥市| 新河县| 大英县| 井陉县| 罗田县| 镇雄县| 基隆市| 鄂尔多斯市| 阿瓦提县| 绍兴县| 喀喇沁旗| 泸州市| 通许县| 台东县| 太保市| 拉萨市| 崇文区| 晴隆县| 平乐县| 安达市| 汪清县| 广灵县| 交城县| 阜康市|