node-模块

node模块

在 Node.js 模块系统中,每个文件都被视为一个独立的模块。

node中每个js文件都是一个模块,都可以导出(exports),而多个js文件之间可以导入(require),共同实现一个功能

模块的导出

在一个js文件中实现了功能,要在另一个js文件中使用,就要把对应的功能导出。而模块的导出要用到Module..exports,在exports对象上指定额外的属性

例子:在一个js文件中完成了一个方法或类,想要在别的js中使用,比如定义了一个sum方法和一个Animal的类

1
2
3
4
5
6
7
8
9
function sum(num1, num2){
return num1 + num2;
}

class Animal{
say(){
console.log('animal');
}
}
  • 模块导出的两种方式
1
2
3
4
5
6
7
8
9
// 模块的导出方式1
exports.sum = sum;
exports.Animal = Animal;

// 模块的导出方式2
module.exports = {
sum,
Animal
}

其中exportsmodele.exports的引用。在文件中才有exports,交互模式下没有

1
console.log(exports === module.exports);   // true

模块的导入

模块导出后要在别的js文件中使用还要将模块导入到js文件中,要用到require

  • 上面导出模块的js文件(sum.js)和需要导入的js文件在同一目录下
1
2
3
4
5
6
/**模块的导入*/
const sum = require('./sum')

// 使用
console.log(sum.sum(1, 22));
new myNum.Animal().say()

模块中的this

1
2
3
4
5
6
// 在js文件中导出
let a = 10;
exports.a = a;
/**模块中的this */
console.log('this', this); // { a: 10 }
console.log(this === module.exports); // true
  • 说明js文件中的this指向模块导出的对象exports,在交互模式下this===global