nodejs模塊(暴露接口和引入模塊)

1.建立一個模塊

eg.Market.js

//---------------------------------------------------------------------------------------------------

function createMark(marketName){

this.marketName = marketName;

console.info('you create a market which name is '+this.marketName+'!!!');

function getMarketName (){

return this.marketName;

}

exports.createMark = createMark;

exports.getMarketName = getMarketName;

//---------------------------------------------------------------------------------------------------

eg. Main.js

//---------------------------------------------------------------------------------------------------

var mark = require('./Market.js');

mark.createMark('dapaer`s market');

console.info('mark`s name is ' + mark.getMarketName());

//---------------------------------------------------------------------------------------------------

通過exports去暴露模塊的成員或方法(暴露公開的api)

有兩種方式

1.module.exports.xxx = 模塊里面的某個接口

2.exports.xxx = 模塊里面的某個接口

這兩者的區(qū)別

1.exports 是module.exports的引用指向同一個內(nèi)存地址

2.require需要返回的是module.exports而不是exports,如果此時exports仍為module.exprots的引用則沒有關(guān)系,如果不是則會報錯。

? ? ? ? ? ?--》不是的情況:eg.exports = function(){xxx}或者exports = {}//一個新的對象,則會將原來的引用關(guān)系破裂,此時若是暴露module.exports = function(){xxx}或者module.exports = {}//一個新對象,不會報錯,因為返回的仍然是require需要的。

通過require去加載模塊

eg. var market = require('./Market.js')//.代表當前目錄下

這段代碼表達用require加載Market.js這個模塊,返回了module.exports暴露出來的所有方法到market這個對象上

補充

所謂的引用是指指向同一個內(nèi)存地址

eg. var personA = {Name:'TOM'};

? ? ? var personB = personA;

? ? ?此時personB是personA的引用

? ? ?如果此時將personB的屬性Name 修改personA同樣也會修改因為他們指向同一個內(nèi)存地址,若此時將personB = {Name:'Candy'},則此時personA不會被改變,因為已將personB重新賦值,personB不再是personA的引用了,這里可以解釋上的exports和module.exports的關(guān)系。

最后運行


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 模塊 Node 有簡單的模塊加載系統(tǒng)。在 Node 里,文件和模塊是一一對應(yīng)的。下面例子里,foo.js加載同一個...
    保川閱讀 686評論 0 0
  • Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設(shè)計出JavaScri...
    w_zhuan閱讀 3,732評論 2 41
  • 什么是模塊化開發(fā)? 前端開發(fā)中,起初只要在script標簽中嵌入幾十上百行代碼就能實現(xiàn)一些基本的交互效果,后來js...
    半世韶華憶闌珊閱讀 720評論 0 0
  • 扇風:孫子兵法
    秋日私語書箋閱讀 133評論 0 2
  • 我愛你,這句話,是有很深刻,很深刻的意義。 二十出頭的我,在國內(nèi),沒有任何權(quán)利,能力說:我愛你,香香。 兩個人的世...
    玉佳閱讀 302評論 0 0

友情鏈接更多精彩內(nèi)容