Node.js 模块系统
参考https://www.runoob.com/nodejs/nodejs-module-system.html
- 文件和模块一一对应;
- 一个Node.js文件就是一个模块,这个模块可能是JavaScript代码、JSON或者编译过的C/C++拓展。
引入模块
语法
require('路径+模块的文件名')
通过require()来获取指定Node.js文件暴露的exports对象,模块文件拓展名可省略。
引出模块
语法
// 1.第一种方式
exports.xxx = function(){};
// 2.第二种方式
function xxx(){};
modules.exports = xxx;
//然后在其他文件中就可以
var xxx = require('路径+文件名')
- 模块中要写成一个function(){}的形式,然后赋值给exports.模块名或者modules.exports(此时不能是匿名function);
- 然后function中可以定义字段和方法等。
- 不建议同时使用exports.模块名和modules.exports;
- exports.模块名是module.exports的一个地址引用,Node.js只会导出module.exports的指向
模块的加载
模块的种类
Node.js中存在4类模块(原生模块和3种文件模块)
- 原生模块:http、fs、path等
- 相对路径模块:./mod或../mod等
- 绝对路径模块
- 通过包管理器安装的模块等
加载顺序的原则
- 文件模块 >> 原生模块
- 缓存区中已有 >> (需要额外加载 >> 额外加载后放入缓存区)