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

推荐阅读更多精彩内容

  • 模块 Node 有简单的模块加载系统。在 Node 里,文件和模块是一一对应的。下面例子里,foo.js加载同一个...
    保川阅读 288评论 0 0
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,065评论 2 40
  • nodejs 模块机制 简单模块定义和使用 在Node.js中,定义一个模块十分方便。我们以计算圆形的面积和周长两...
    艾伦先生阅读 767评论 0 4
  • 1 Node.js模块的实现# 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都...
    七寸知架构阅读 1,660评论 1 50
  • 痛苦,反抗,不屈服!
    猩猩点灯尼采你猜阅读 57评论 1 0