模块的组成
- require - 引入其他模块
- module - 单独输出模块
- exports - 批量输出模块
怎么引入自己的模块?
- 引入NodeJS 系统内置的模块
const http = require('http');
- 引入自己的模块
const mod = require('./mod.js');
使用注意
- 区别于系统内置模块,必须使用
./
,代表当前目录下 -
.js
是可选的,可写可不写 - 使用
npm
的话,不需要加./
,但是必须放在node_modules目录下
** require查找原则**
- 如果加
./
,从当前目录查找 - 如果没有加
./
,先从系统模块 ,再者从 node_modules中查找
为什么使用exports输出,使用var声明的变量,其他模块接收不到?
- 没有全局变量的概念
- 可控制的。你想让哪个模块对外暴露,就把它挂载到exports
exports.a = 12;
在模块中定义的变量是全局变量吗?
不是。NodeJS偷偷地加了一个东西。
(function(){
var a = 12;
var b = 18;
exports.a = 12;
})();
module在模块中到底是干嘛的?
- 对外批量输出东西 (以下两种输出方式,肯定是module.exports更简单)
exports.a = 'a';
exports.b = 'b';
exports.c = 'b';
exports.d = 'd';
exports.e = 'e';
module.exports = {a : 1,b : 2,c : 3,d : 4,e : 5};
module.exports 和 exports
console.log(module.exports == exports); //true