前言 Node中,每個模塊都有一個 介面對象,我們需要把公共的方法或者字元串掛載在這個介面對象中,其他的模塊才可以使用。 Node.js中只有模塊作用域,預設兩個模塊之間的變數,方法互不衝突,互不影響,這樣就導致一個問題,我們怎樣使用載入進來的模塊中的方法呢?這就需要在另外一個模塊 介面對象中掛載模 ...
前言
Node中,每個模塊都有一個exports
介面對象,我們需要把公共的方法或者字元串掛載在這個介面對象中,其他的模塊才可以使用。
Node.js中只有模塊作用域,預設兩個模塊之間的變數,方法互不衝突,互不影響,這樣就導致一個問題,我們怎樣使用載入進來的模塊中的方法呢?這就需要在另外一個模塊
exports
介面對象中掛載模塊中公共的方法。
- exports
我們在a.js
中有以下代碼:
let foo = 'hello'
function add (x, y) {
return x+y
}
exports.add = add // 在介面對象中掛載公共的add方法
exports.foo = foo // 在介面對象中掛載foo屬性
此時,在b.js
中如果需要使用add
方法,只需引入a.js
即可。b.js
代碼如下:
let a = require('./a.js') // a.js和b.js在同級目錄下,註意:同級目錄必須加“./”
console.log(a.add(20,30)) // 使用a.js中的add方法
最後我們看到的效果如下:
相反,如果我們沒有在a.js
exports介面對象中掛載add方法,那麼這裡就得不到結果。
- module.exports
對於1中的例子,我們同樣可以利用module.exports
來寫,只需把暴露的方式改成如下:
module.exports.add = add
module.exports.foo = foo
最終得到的效果是一樣的:
總結
Node中每個模塊都有一個
module
對象,module
對象中的有一個exports
屬性為一個介面對象,我們需要把模塊之間公共的方法或屬性掛載在這個介面對象中,方便其他的模塊使用這些公共的方法或屬性。Node中每個模塊的最後,都會
return: module.exports
。Node中每個模塊都會把
module.exports
指向的對象賦值給一個變數exports
,也就是說:exports = module.exports
。module.exports = XXX
,表示當前模塊導出一個單一成員,結果就是XXX。如果需要導出多個成員時必須使用
exports.add = XXX; exports.foo = XXX;
或者使用module.exports.add = XXX; module.export.foo = XXX;
。
說明
本倉庫是自己Node.js學習過程的真實記錄,以後會每天更新一些新的知識點,希望可以對想要學Node.js的同學有一些幫助,歡迎star,你們的點贊是我更新的持久動力。同時如果你覺得本倉庫中的一些知識點有錯誤也可以issue我,方便後期我訂正!
本倉庫同時在博客園和掘金更新,歡迎寫博客的朋友一起學習交流。
博客園
掘金
GitHub