Node.js 模块的分类 require 的使用详细介绍

devtools/2025/3/16 10:54:26/

目录

 

1. 介绍

2. 模块的分类及 require 使用示例

1. 核心模块

2. 第三方模块

3. 自定义模块

3. require 的解析规则

4. 总结


 

1. 介绍

Node.js 采用模块化的方式组织代码,使得开发更加清晰、可维护,并且可以重复利用已有的代码。Node.js 模块主要分为以下几类:

  • 核心模块(Built-in Modules):Node.js 内置的模块,如 fshttppathos 等,直接通过 require() 引入即可使用。
  • 第三方模块(Third-party Modules):通过 npm 安装的模块,如 expressaxios 等,需要安装后再 require() 引入。
  • 自定义模块(Custom Modules):开发者自己编写的模块,通常是一个 JavaScript 文件,通过 module.exportsexports 导出。

require() 是 Node.js 中用于加载模块的函数,可以引入核心模块、第三方模块和自定义模块。


2. 模块的分类及 require 使用示例

1. 核心模块

核心模块是 Node.js 直接提供的功能,直接用 require() 引入,无需安装。
示例(文件名:core_module.js):

javascript">// 引入 Node.js 的 fs(文件系统)核心模块
const fs = require('fs');// 使用 fs 模块读取当前目录下的文件
fs.readdir('.', (err, files) => {if (err) {console.error('读取目录失败', err);} else {console.log('当前目录下的文件:', files);}
});

运行结果:

当前目录下的文件: [ 'core_module.js', 'custom_module.js', 'third_party_module.js' ]

2. 第三方模块

第三方模块需要使用 npm install 进行安装后才能使用。

示例:使用 axios 进行 HTTP 请求(文件名:third_party_module.js

javascript">// 先安装 axios: npm install axios
const axios = require('axios');// 发送 GET 请求
axios.get('https://jsonplaceholder.typicode.com/posts/1').then(response => {console.log('获取的数据:', response.data);}).catch(error => {console.error('请求失败', error);});

运行结果:

获取的数据: { userId: 1, id: 1, title: '...', body: '...' }

3. 自定义模块

自定义模块是开发者自己编写的 JavaScript 文件,使用 module.exports 导出。

步骤:

  • 创建一个数学计算模块 math.js
  • 在主文件 custom_module.js 中引入并使用

文件 1(文件名:math.js,用于导出功能)

javascript">// 自定义模块,提供数学计算方法
const add = (a, b) => a + b;
const subtract = (a, b) => a - b;// 使用 module.exports 导出模块
module.exports = {add,subtract
};

文件 2(文件名:custom_module.js,用于引入并使用模块)

javascript">// 引入自定义模块
const math = require('./math'); // 需要加 './' 表示是自定义模块console.log('加法结果:', math.add(10, 5));  // 输出:15
console.log('减法结果:', math.subtract(10, 5)); // 输出:5

运行结果:

加法结果: 15
减法结果: 5

3. require 的解析规则

require() 引入模块时,Node.js 会按以下顺序查找模块:

  1. 核心模块(如 fshttp),如果是核心模块,直接返回模块对象。
  2. 自定义模块,如果是 ./../ 开头的路径,Node.js 解析对应文件并加载。
  3. 第三方模块,Node.js 会从 node_modules 目录中查找模块,逐级向上查找(从当前目录开始,直到根目录)。

示例:

javascript">const fs = require('fs'); // 直接加载核心模块
const math = require('./math'); // 加载自定义模块
const axios = require('axios'); // 加载第三方模块(需要提前安装)

4. 总结

  • 核心模块 直接 require() 使用,无需安装。
  • 第三方模块 需使用 npm install 包名 安装后才能 require() 使用。
  • 自定义模块 通过 module.exportsexports 导出,使用 require('./模块路径') 引入。
  • require() 按以下顺序解析模块:
    1. 核心模块
    2. 自定义模块(使用相对路径或绝对路径)
    3. 第三方模块(先查找 node_modules 目录)

通过本教程,大家应该能够清楚了解 Node.js 的模块分类,以及如何使用 require() 引入不同类型的模块,希望对大家的学习有所帮助!

 


http://www.ppmy.cn/devtools/167533.html

相关文章

前端 Webpack 面试题

1、什么是 Webpack?它有什么作用? Webpack 是一个前端资源打包工具,用于将 JavaScript、CSS、图片等项目资源进行模块化管理和打包。它能够将复杂的项目结构转化为浏览器友好的代码,提高前端项目的开发效率和性能。 模块打包:Webpack 将项目中的各个模块及依赖打包成一个…

R语言零基础系列教程-01-R语言初识与学习路线

代码、讲义、软件回复【R语言01】获取。 R语言初识 R是一个开放的统计编程环境,是一门用于统计计算和作图的语言。“一切皆是对象”,数据、函数、运算符、环境等等都是对象。易学,代码像伪代码一样简洁,可读性高强大的统计和可视…

F4拉力赛(滑动窗口)

题目描述 F4拉力赛在一个环形公路上举行,主办方为了拉来更多赞助,在环形公路每间隔一米就设立一块广告牌。 假设赛车的速度为 x 米/秒,请问赛车在一秒内经过最多数量的广告牌编号是什么? 输入描述 第一行输入一个数组&#xf…

PowerInfer论文阅读

论文原文链接 论文github链接 论文结构 1. 引言 讨论了当前大语言模型的推理需求与挑战,尤其是在消费级GPU上运行模型的难点: 大语言模型的内存需求巨大,远超消费级GPU的容量。 数据中心部署的方法通常无法满足本地部署的低延迟需求。 …

图解AUTOSAR_CP_BSW_General

AUTOSAR BSW通用规范详解 AUTOSAR基础软件模块通用规范与架构解析 目录 1. 概述 1.1. AUTOSAR BSW通用规范简介1.2. 文档目的与范围2. BSW模块文件结构 2.1. 标准文件组织2.2. 命名规范3. BSW模块接口 3.1. 接口类型3.2. 模块API3.3. 配置参数4. BSW通用架构 4.1. 分层架构4.2.…

系统架构设计师—案例分析—数据库篇—数据库性能优化

文章目录 集中式数据库反规范化设计分类保证数据的一致性方法 分布式数据库主从复制读写分离分表分库 集中式数据库 反规范化设计 优点: 避免进行表之间的连接操作,可以提高数据操作的性能。 缺点: 数据的重复存储,浪费磁盘空…

Android 手机启动过程

梳理 为了梳理思路,笔者画了一幅关于 Android 手机启动的过程图片内容纯属个人见解,如有错误,欢迎各位指正

历年云南大学计算机复试上机真题

历年云南大学计算机复试机试真题 在线评测:传送门:pgcode.cn 喝饮料 题目描述 商店里有 n 中饮料,第 i 种饮料有 mi 毫升,价格为 wi。 小明现在手里有 x 元,他想吃尽量多的饮料,于是向你寻求帮助&#x…