🪵 模块系统
Node.js 的模块系统是其核心特性之一,它允许开发者将程序分割为可重用的单元,提高了代码的组织性和可维护性。
基础知识
Node.js 的模块系统提供了一种简 洁、灵活的方式来组织和管理代码,同时也支持了强大的社区生态系统。通过模块化的方法,开发者可以轻松地共享和重用代码,提高了开发效率和代码质量。
-
模块的概念: 在 Node.js 中,每个文件都被视为一个独立的模块。这意味着在一个文件中定义的变量、函数等不会被自动地泄露到其他文件中。
-
require 函数:
require()是 Node.js 中用于加载模块的主要函数。通过这个函数,一个模块可以导入其他模块提供的功能。例如:const fs = require('fs')会导入 Node.js 核心的文件系统(fs)模块。 -
module.exports 和 exports: 模块可以通过
.exports或exports对象将函数、对象或变量导出,以供其他模块使用。module.exports是真正用于导出模块公共接口的对象,而exports是它的一个引用,用于方便地导出多个值。 -
核心模块: Node.js 提供了一系列内置的核心模块,用于执行常见任务,如文件系统操作(fs)、路径操作(path)、网络通信(http、https)等。
-
文件模块: 用户可以创建自己的模块(文件模块),并使用
require函数导入它们。Node.js 使用文件路径来识别这些模块。 -
第三方模块:
第三方模块是由社区贡献的模块,可以通过 npm(Node Package Manager)安装。这些模块通常存放在 node_modules 目录下。
-
模块解析机制: 当使用
require导入模块时,Node.js 会按照一定的规则解析模块路径。这包括解析绝对路径、相对路径和模块名。 -
模块缓存: 一旦模块被加载,它会被缓存。这意味着如果多次调用
require导入同一个模块,不会重复执行模块代码,而是返回缓存的导出对象。 -
包和 package.json: 一个包通常是一个包含
package.json文件的目录,该文件描述了包的属性,如名称、版本、依赖等。Node.js 通过package.json来处理模块的依赖关系。 -
ES6 模块: Node.js 也开始支持 ECMAScript 6 (ES6) 中的模块系统。ES6 模块使用
import和export语法。