NodeJS 自定义模块

模块的组成

  • 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

你可能感兴趣的:(NodeJS 自定义模块)