3. 模块化
3.1 CommonJS 模块
CommonJS 是 Node.js 的传统模块系统。每个文件都是一个模块,默认情况下,模块内的变量、函数和对象不会暴露给外部,除非使用 module.exports
或 exports
显式地导出它们。
-
模块的导出
// math.js function add(a, b) { return a + b; } function subtract(a, b) { return a - b; } module.exports = { add, subtract };
-
模块的导入
// app.js const math = require('./math'); console.log(math.add(2, 3)); // 输出: 5 console.log(math.subtract(5, 2)); // 输出: 3
3.2 ES6 模块
ES6 模块(ECMAScript 2015 模块)是 JavaScript 的官方模块系统。它使用 import
和 export
语法来导入和导出模块,提供了更清晰的模块化方式。Node.js 自 v12 版本起支持 ES6 模块,但需通过 .mjs
文件扩展名或在 package.json
中设置 "type": "module"
来启用。
-
模块的导出
// math.mjs export function add(a, b) { return a + b; } export function subtract(a, b) { return a - b; }
-
模块的导入
// app.mjs import { add, subtract } from './math.mjs'; console.log(add(2, 3)); // 输出: 5 console.log(subtract(5, 2)); // 输出: 3
-
使用
package.json
配置 ES6 模块// package.json { "type": "module" }
3.3 模块管理
Node.js 使用 package.json
文件来管理项目的依赖、脚本和元数据。这个文件定义了项目的基本信息,并记录了所有的依赖模块及其版本。
-
创建和编辑
package.json
-
初始化项目
npm init
这个命令会引导你通过一系列问题来创建
package.json
文件。 -
手动编辑
{ "name": "my-project", "version": "1.0.0", "description": "A sample project", "main": "index.js", "scripts": { "start": "node index.js" }, "dependencies": { "express": "^4.17.1" } }
-
-
安装和管理依赖
-
安装新模块
npm install express
这个命令会将
express
模块添加到node_modules
目录中,并更新package.json
和package-lock.json
文件。 -
卸载模块
npm uninstall express
-
查看已安装的模块
npm list
-
更新依赖
npm update
-
总结
模块化是 Node.js 的一个重要概念,它使得代码组织和维护变得更加清晰和高效。CommonJS 和 ES6 模块是 Node.js 支持的两种主要模块系统。掌握模块的导入和导出、管理模块依赖是构建和维护 Node.js 应用的关键。随着项目的复杂性增加,你会发现模块化可以大大提高代码的可维护性和可复用性。