Node.js 教程
Node.js 基础
Node.js 概述
Node.js 环境搭建
Node.js 基础语法
Node.js 模块
Node.js 异步编程
Node.js 核心模块
Node.js文件系统
Node.js路径模块(path)
Node.js的HTTP模块
Node.js的url模块
Node.js流模块(stream)
Node.js 常用工具与框架
npm 与包管理
Express 框架
数据库操作
Socket.io 与 WebSocket
Node.js 实战项目
Web 应用开发
API 开发
爬虫应用
自动化脚本
Node.js部署与优化
部署 Node.js 应用
Node.js性能优化
Node.js应用的安全性
Node.js 高级话题
Node.js中的设计模式
TypeScript 与 Node.js
GraphQL 与 API 开发
-
+
首页
Node.js 模块
以下案例展示了 Node.js 的 CommonJS 和 ESM 模块标准的使用,包括导出和导入模块的代码示例: ### **案例:数学工具模块** 假设我们有一个数学工具模块,包含加法和减法功能,以及一个用户对象。我们将分别使用 CommonJS 和 ESM 模块标准来实现和测试。 --- #### **1. CommonJS 模块** **模块文件:`math.js`** ```javascript // math.js (CommonJS) // 导出一个函数:加法 function add(a, b) { return a + b; } // 导出一个函数:减法 function subtract(a, b) { return a - b; } // 导出一个对象 const user = { name: 'Jake', age: 28, }; // 使用 module.exports 导出模块 module.exports = { add, subtract, user, }; ``` **主文件:`app.js`** ```javascript // app.js (CommonJS) // 导入模块 const math = require('./math'); // 使用导出的函数 console.log(math.add(5, 3)); // 输出: 8 console.log(math.subtract(5, 3)); // 输出: 2 // 使用导出的对象 console.log(math.user.name); // 输出: Jake console.log(math.user.age); // 输出: 28 ``` **运行命令:** ```bash node app.js ``` --- #### **2. ECMAScript 模块 (ESM)** **模块文件:`math.mjs`(或 `math.js` + `package.json` 的 `"type": "module"`)** ```javascript // math.mjs (ESM) // 导出一个函数:加法 export function add(a, b) { return a + b; } // 导出一个函数:减法 export function subtract(a, b) { return a - b; } // 导出一个对象 export const user = { name: 'Emily', age: 24, }; ``` **主文件:`app.mjs`(或 `app.js` + `package.json` 的 `"type": "module"`)** ```javascript // app.mjs (ESM) // 导入模块 import { add, subtract, user } from './math.mjs'; // 使用导出的函数 console.log(add(5, 3)); // 输出: 8 console.log(subtract(5, 3)); // 输出: 2 // 使用导出的对象 console.log(user.name); // 输出: Emily console.log(user.age); // 输出: 24 ``` **运行命令:** ```bash node app.mjs ``` **注意:** - 如果使用 `.js` 文件名,需要在项目的 `package.json` 中添加 `"type": "module"`,否则会报错。 - ESM 是浏览器和现代工具链的标准,需要 Node.js 版本 >= 12.17.0 或 14.5.0+。 --- ### **总结** - **CommonJS** 是 Node.js 早期的模块化标准,使用 `require` 和 `module.exports`。 - **ECMAScript 模块 (ESM)** 是现代的模块化标准,使用 `import` 和 `export`,适用于浏览器和现代工具链,并且在 Node.js 中通过 `.mjs` 文件或 `package.json` 的 `"type": "module"` 启用。 使用模块化可以提升代码的可维护性和可复用性,你可以根据项目需求选择合适的模块标准。
wwbang
2025年2月26日 17:39
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码