03-node模块机制

本文深入讲解Node.js中的模块概念,包括核心模块如http、fs、path等,以及用户模块的分类和使用方法。同时,详细介绍了如何加载和自定义模块,以及在CommonJS规范下module.exports和exports的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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来导出的。如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值