一、Node.js常见模块
在node中,模块有不同的表现形式,其使用方式也有差异。
基本上,我们可以将node.js中的模块分为两种:核心模块(系统模块)、用户模块
1.核心模块
核心模块,也叫系统模块,是node.js自带,只要安装了node.js,它就已经具备了这些模块。是可以直接引入并使用的。
系统模块在源代码中已经编译了,以二进制文件存在,模块引入时可以直接加到内存。
常见的核心模块有http、fs、path、url。
2.用户模块
所有非核心模块,都属于用户模块。
实际上,用户模块,有可以分为两种:第三方模块;自定义模块
二、载入模块
Node.js默认是使用CommonJS规范,就包含两个东西:
- require方法,用于载入模块
- module.exports对象,用于导出模块
在node.js中,要载入模块,必须要使用requrie方法。
在使用require的时候,需要分成如下三种情况来讨论:核心模块;第三方模块;自定义模块
1.核心模块
这是最简单的,因为核心模块是node自带。只需要传入模块的名称即可。
//引入http核心模块
const http = require("http");
console.log(http);
//引入fs模块
const fs = require("fs");
console.log(fs);
注意,常量的名称可以是随意的,但是为了语义,尽量和模块名称保持一致。
不能再加任何和路径相关的写法,否则就出错了。
2.第三方模块
属于用户模块,是非核心。分两步完成,
第一步:下载相关模块,例如下载lodash模块
第二步:引入使用,如下:
3.自定义模块
需要分为两步:
第一步,定义一个模块
第二步,引入自定义模块
定义一个模块
第二步,使用require引入,
注意:
- 对于自定义模块,必须要使用相对路径来引入,必须是使用./或者…/开头。否则报错。
- 文件的后缀名是可以省略的,包括js后缀和json后缀。
- 一旦省略了后缀,引入机制有些变化,依照 目录 ->.js-> .json-> .node 的顺序进行查找,如果所有模块路径都找不到该文件,则抛出异常。
- 如果require的是文件夹名称,默认会引入该文件夹下的文件。
三、自定义模块实现
1.使用module.exports导出模块
在开发中,会经常需要使用自定义模块。
它的整体的过程如下:
换言之,module.exports 是一个全局变量。可以直接在js文件中对其赋值。
在使用require方法引入一个模块的时候,返回的就是module.exports。
module.exports默认是空对象。
在导出模块的时候,就可以直接给module.exports赋值即可
再比如
2.exports对象
在CommonJS中,导出模块是通过module.exports来实现的。
在CommonJS中,使用requrie方法,得到的结果就是module.exports。
在CommonJS中,给module.exports起了一个别名—exports。
所以,在有些地方,它是使用exports来导出的。如下: