当前位置: 首页 > article >正文

【Node.js入门笔记11---模块化】

Node.js入门笔记11

  • Node.js---模块化
  • 一、Node.js模块化学习指南
    • 1. CommonJS模块使用
    • 2. ES6模块使用
    • 3. 混合使用CommonJS与ES6模块
    • 4. 核心模块与第三方模块
    • 5. 模块解析机制

Node.js—模块化

什么是模块化?
将代码拆分为独立的功能块,每个模块负责特定功能,提高可维护性和复用性。编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。

把代码进行模块化拆分的好处:大家都遵守同样的模块化规范写代码,降低了沟通的成本,极大方便了各个模块之间的相互调用利人利己。
① 提高了代码的复用性
② 提高了代码的可维护性
③ 可以实现按需加载

Node.js 中模块的分类
Node.js 中根据模块来源的不同,将模块分为了 3 大类,分别是:
内置模块(内置模块是由 Node.s 官方提供的,例如 fs、path、http 等)
自定义模块(用户创建的每个 .js 文件,都是自定义模块)
第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载)

一、Node.js模块化学习指南

1. CommonJS模块使用

Node.js 遵循了 CommonJS 模块化规范,CommonJS 规定了模块的特性和各模块之间如何相互依赖.
CommonJS 规定:

① 每个模块内部,module 变量代表当前模块。
② module 变量是一个对象,它的 exports 属性(即 module.exports)是对外的接口,
③ 加载某个模块,其实是加载该模块的 module.exports 属性。
导出模块

导出模块:

// math.js
const add = (a, b) => a + b;
module.exports = { add };  // 导出对象
// 或直接导出单个函数
// exports.add = add;

导入模块:

// app.js
const math = require('./math.js');
console.log(math.add(2, 3)); // 输出: 5

模块拆分与复用:

// config.js
module.exports = {
  port: 3000,
  dbUrl: 'mongodb://localhost:27017/mydb'
};

// server.js
const { port, dbUrl } = require('./config');
console.log(`Server running on port ${port}`);

2. ES6模块使用

  1. 启用ES6模块
    方法1:文件后缀名为 .mjs
// utils.mjs
export const capitalize = (str) => str.toUpperCase();

方法2:在 package.json 中设置

{
  "type": "module"
}
  1. 导出与导入
// app.mjs
import { capitalize } from './utils.mjs';
console.log(capitalize('hello')); // 输出: HELLO
  1. 默认导出
// logger.mjs
const log = (message) => console.log(`[INFO] ${message}`);
export default log;

// app.mjs
import logger from './logger.mjs';
logger('Module loaded'); // 输出: [INFO] Module loaded

3. 混合使用CommonJS与ES6模块

  1. 在CommonJS中引入ES6模块
// 需使用动态导入(异步)
import('./utils.mjs').then(({ capitalize }) => {
  console.log(capitalize('hello'));
});
  1. 在ES6模块中引入CommonJS
// utils.cjs
exports.add = (a, b) => a + b;

// app.mjs
import { add } from './utils.cjs';
console.log(add(2, 3)); // 输出: 5
  1. CommonJS vs ES6模块
    node截图

4. 核心模块与第三方模块

  1. 使用Node.js内置模块
const fs = require('fs'); // CommonJS
// 或
import fs from 'fs';      // ES6
  1. 安装与使用第三方模块
npm install lodash       # 安装lodash
const _ = require('lodash');             // CommonJS
// 或
import _ from 'lodash';                  // ES6
console.log(_.chunk([1, 2, 3, 4], 2));  // 输出: [[1,2], [3,4]]

5. 模块解析机制

  1. 查找顺序
    内置模块(如 fs、path) → node_modules → 文件路径模块。
    示例:require(‘my-module’) 会依次查找:
    Node.js核心模块
    ./node_modules/my-module
    上级目录的 node_modules(递归查找)

  2. 文件夹模块
    若路径指向文件夹,Node.js会查找:
    package.json 中的 main 字段指定文件
    默认查找 index.js


http://www.kler.cn/a/598912.html

相关文章:

  • ChatGPT vs DeepSeek vs Copilot vs Claude:谁将问鼎AI王座?
  • 【操作系统笔记】操作系统的功能
  • 【构建CV图像识别系统】从传统方法到深度学习
  • 二手Mac验机过程
  • leetcode_双指针 11. 盛最多水的容器
  • MySQL 调优:查询慢除了索引还能因为什么?
  • TCP协议原理
  • LeetCode(704):二分查找
  • 剖析C++中继承、多态的底层原理
  • 前端会话控制技术:cookie/session/token
  • 哈尔滨工业大学DeepSeek公开课人工智能:大模型原理 技术与应用-从GPT到DeepSeek|附视频下载方法
  • Sql Server数据迁移易错的地方
  • HarmonyOS Next~鸿蒙系统功耗优化体系解析:前台交互与后台任务的全场景节能设计
  • 红数码影视(RED Digital Cinema)存储卡格式化后的恢复方法
  • AF3 rot_matmul 和 rot_vec_mul函数解读
  • 跨平台数据集成:从SQLServer到MySQL的高效实践
  • QT 图表(拆线图,栏状图,饼状图 ,动态图表)
  • Python散点密度图(Scatter Density Plot):数据可视化的强大工具
  • SysVinit和Systemd的系统运行级别
  • others-rustdesk远程