亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

node.js中module.exports與exports用法上的區(qū)別

 更新時(shí)間:2016年09月02日 08:57:04   作者:愛(ài)可不可愛(ài)  
Node.js 引入了模塊(Module)概念,一個(gè)模塊可以通過(guò)module.exports 或 exports 將函數(shù)、變量等導(dǎo)出,以使其它 JavaScript 腳本通過(guò)require() 函數(shù)引入并使用。那么node.js中module.exports與exports有什么區(qū)別呢?下面小編給大家解答下

 Node.js 引入了模塊(Module)概念,一個(gè)模塊可以通過(guò)module.exports 或 exports 將函數(shù)、變量等導(dǎo)出,以使其它 JavaScript 腳本通過(guò)require() 函數(shù)引入并使用?!?br />

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

exports = module.exports = {};

舉個(gè)栗子,在node.js中創(chuàng)建模塊非常簡(jiǎn)單,一個(gè)文件就是一個(gè)模塊,所以我們創(chuàng)建一個(gè)name.js文件就創(chuàng)建了一個(gè)模塊name.js,使用exports和require對(duì)象對(duì)外提供接口和引用模塊。

name.js

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

這樣在使用的時(shí)候需要這樣

app.js

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

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

name.js 

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

app.js

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

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

exports是引用 module.exports的值。exports 被改變的時(shí)候,module.exports不會(huì)被改變,而模塊導(dǎo)出的時(shí)候,真正導(dǎo)出的執(zhí)行是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);

運(yùn)行會(huì)報(bào)錯(cuò)。因?yàn)?,前面是通過(guò)給 exports 添加屬性,而現(xiàn)在對(duì) exports 指向的內(nèi)存做了修改,exports 和 module.exports 不再指向同一塊內(nèi)存,即 module.exports 指向的那塊內(nèi)存并沒(méi)有做任何改變,仍然為一個(gè)空對(duì)象 {},所以會(huì)報(bào)錯(cuò)。

相關(guān)文章

最新評(píng)論