模块module和exports
- 在一个模块中通过var 定义的变量是局部的,如果另一个模块想使用这个变量,那么应该如何呢?(类似一个函数).
- 把变量作为global对象变量的一个属性:global.a=100;这样是可以的,但是不推荐这样做哦.
- 使用module模块对象.
- console.log(module).:每一个模块都有自己专属的module对象.
- module对象下面有一个很重要的子对象(属性)是什么呢?他就是我们的主角exports
- 我们可以通过这个对象,把一个模块中的局部变量暴露出去,提供访问的借口.
var a=0; module.exports.a=a;
- 通过require加载另外的一个模块的时候,他有一个返回值,其实这个返回值就是module对象下的exports对象!
- 在模块作用于下,还有一个内置的模块对象,exports,它其实就是module.exports.module===module.exports.
- 不能 * 1module.exports=[1,2,3]* 也不能 2exports=[1,2,3],——这样module和exports.module的指向关系就断开了 在1后面加
exports.a=200
,另外一个模块引用的就是暴露出去的数组而不是数字200了. 也不要直接exports=[3,4,5],这样的话,另外一个模块引用的就是一个空的对象!
所以我们只能在他们两者上面添加属性,而不是重写他们的指向关系.