Node.js 模块系统学习笔记
什么是模块?
在 Node.js 中,代码被组织成模块。模块是 Node.js 中重要的概念之一,它将相关的代码组织到一个文件或多个文件中,便于代码的维护和重用。
Node.js 中的模块可以通过 require
函数引入到其他模块中使用,也可以使用 exports
对象暴露模块中的函数或变量供外部模块使用。
模块的分类
Node.js 中的模块可以分为以下两类:
- 核心模块(Core Modules)
- 文件模块(File Modules)
核心模块
核心模块是 Node.js 内置的模块,可以直接使用而无需通过 npm
安装。例如,fs
、http
等模块都属于核心模块。
使用核心模块时,只需要传入模块名称即可,例如:
javascriptCopy Codeconst http = require('http')
文件模块
文件模块是自定义的模块,可以在项目中创建自己的模块文件,并通过 require
函数来引入。
这里举一个例子,假设我们有一个名为 math.js
的模块文件,其中包含了两个函数:add
和 multiply
,代码如下:
javascriptCopy Codefunction add(x, y) {
return x + y
}
function multiply(x, y) {
return x * y
}
// 通过 exports 对象暴露模块中的函数
exports.add = add
exports.multiply = multiply
然后,在其他文件中就可以通过 require
函数来引入并使用该模块中的函数:
javascriptCopy Codeconst math = require('./math.js')
console.log(math.add(1, 2)) // 输出 3
console.log(math.multiply(3, 4)) // 输出 12
模块的加载顺序
在 Node.js 中,模块的加载顺序是以深度优先遍历的方式进行的。例如,假设我们有以下代码:
javascriptCopy Codeconst a = require('./a.js')
其中,a.js
又引入了另一个模块 b.js
,那么加载顺序将会是:a.js
-> b.js
。
模块缓存
在第一次引入模块时,Node.js 会将其缓存在内存中,以便在后续调用中直接返回已经加载过的模块对象,而不需要重新执行模块代码。因此,多次引入同一个模块时,只会执行一次模块代码。
总结
本文介绍了 Node.js 中的模块系统,包括模块的定义、分类、加载顺序以及模块缓存等方面。通过学习本文,相信你已经掌握了 Node.js 中模块系统的基本知识,可以更好地组织和重用自己的代码。