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