Node.js学习之(第二章:exports和module.exports)
前言
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
上一篇: 20190503-相同的树
下一篇: python day08 文件操作
推荐阅读
-
Node.js 中exports 和 module.exports 的区别
-
Node.js 中 exports 和 module.exports 的区别
-
详解Node.js中exports和module.exports的区别
-
Node.js学习之(第二章:exports和module.exports)
-
node.js学习笔记之koa框架和简单爬虫练习
-
Node.js中module.exports 和exports使用误区
-
详解Node.js中exports和module.exports的区别
-
node.js和ES6的exports、module.exports使用详解
-
Node.js学习之(第二章:exports和module.exports)
-
Node.js 中 exports 和 module.exports 的区别