收录了这篇文章
Node.js 模块是 Node.js 环境中的基本构建块,它允许开发者将代码组织成独立的、可重用的部件。模块有助于提高代码的可维护性、可读性和减少全局命名冲突。Node.js 采用 CommonJS 规范来实现模块系统。
基本概念
-
模块分类:Node.js 中的模块大致可以分为两类,一类是内置模块(如 fs, http, path 等),这些模块由 Node.js 官方提供,无需安装即可使用;另一类是外部模块或自定义模块,这类模块需要通过 npm(Node Package Manager)安装或者开发者自己创建。
-
导出(module.exports 和 exports):模块可以通过 module.exports 或 exports 对象来导出函数、对象或变量,供其他模块使用。module.exports 是模块的默认导出对象,直接修改它来定义模块的接口。而 exports 是 module.exports 的一个引用,通常用于更便捷地添加属性到导出对象上,但直接赋值给 exports 不会改变模块的导出对象。
-
导入(require()):使用 require() 函数来导入其他模块。这个函数接受一个字符串参数,表示要加载模块的文件路径。对于内置模块,只需提供模块名;对于本地模块,需要提供相对于当前文件的路径。例如,const fs = require('fs') 导入内置的文件系统模块,而 const myModule = require('./myModule') 导入同目录下的 myModule.js。
实例
创建一个模块
假设我们创建一个名为 math.js 的模块,提供加法功能:
// math.js
exports.add = function(a, b) {
return a + b;
};
使用模块
在另一个文件中,我们可以这样使用 math.js 模块:
// app.js
const math = require('./math');
console.log(math.add(2, 3)); // 输出: 5
注意事项
- 循环依赖:Node.js 支持模块间的循环依赖,但在设计时应尽量避免,因为它可能导致部分导出成员在依赖模块中不可用,直到循环依赖被完全解析。
- 缓存机制:require() 有一个缓存机制,它会缓存已加载过的模块,这意味着同一个模块在程序的多个地方被导入时,只会被加载一次。
理解并熟练运用 Node.js 的模块系统,对于构建可扩展、可维护的应用至关重要。
修改时间 2024-05-28