Node中,每一個模塊都有一個exports
接口對象,咱們須要把公共的方法或者字符串掛載在這個接口對象中,其餘的模塊纔可使用。javascript
Node.js中只有模塊做用域,默認兩個模塊之間的變量,方法互不衝突,互不影響,這樣就致使一個問題,咱們怎樣使用加載進來的模塊中的方法呢?這就須要在另一個模塊
exports
接口對象中掛載模塊中公共的方法。java
咱們在a.js
中有如下代碼:git
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
代碼以下:github
let a = require('./a.js') // a.js和b.js在同級目錄下,注意:同級目錄必須加「./」
console.log(a.add(20,30)) // 使用a.js中的add方法
複製代碼
最後咱們看到的效果以下:bash
相反,若是咱們沒有在a.js
exports接口對象中掛載add方法,那麼這裏就得不到結果。post
對於1中的例子,咱們一樣能夠利用module.exports
來寫,只需把暴露的方式改爲以下:學習
module.exports.add = add
module.exports.foo = foo
複製代碼
最終獲得的效果是同樣的:ui
Node中每一個模塊都有一個module
對象,module
對象中的有一個exports
屬性爲一個接口對象,咱們須要把模塊之間公共的方法或屬性掛載在這個接口對象中,方便其餘的模塊使用這些公共的方法或屬性。spa
Node中每一個模塊的最後,都會return: module.exports
。code
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