js中的require用法

js中的require用法
最新回答
舟遥客

2026-01-09 02:31:09

在 JavaScript 中,require() 是 Node.js 环境下的模块加载方法,用于导入核心模块、第三方依赖或自定义模块。以下是其核心用法和注意事项的总结:

1. 基本语法const module = require('module-name');
  • 参数:module-name 可以是:

    核心模块名(如 'fs'、'http')。

    第三方模块名(如 'express'、'lodash')。

    文件路径(如 './my-module'、'/path/to/module')。

  • 返回值:模块导出的对象(函数、变量、类等)。
2. 常见用例(1) 加载核心模块const fs = require('fs'); // 文件系统模块const http = require('http'); // HTTP 服务器模块
  • 特点:无需安装,直接通过模块名调用。
(2) 加载第三方模块const express = require('express'); // 需提前通过 npm/yarn 安装const mongoose = require('mongoose');
  • 前提:模块需在 package.json 的 dependencies 中声明,并已安装到 node_modules。
(3) 加载自定义模块const myModule = require('./my-module.js'); // 相对路径const utils = require('/project/utils'); // 绝对路径
  • 文件扩展名:可省略 .js、.json(Node.js 会自动补全)。
  • 目录加载:若路径指向目录,Node.js 会尝试读取目录下的 index.js 或 package.json 中的 main 字段。
3. 注意事项
  • 同步加载:require() 是同步操作,会阻塞代码执行直到模块加载完成。优化建议:避免在循环或高频函数中重复调用,改用顶层导入或动态导入(import())。

  • 错误处理:若模块不存在或路径错误,会抛出异常:

    try { const missingModule = require('non-existent-module');} catch (err) { console.error('模块加载失败:', err);}
  • 缓存机制:Node.js 会缓存已加载的模块,多次 require() 同一模块仅执行一次代码。

4. 与 ES Modules 的对比
  • CommonJS (require):

    动态加载,同步执行。

    适用于 Node.js 环境。

  • ES Modules (import/export):import fs from 'fs'; // 静态导入

    静态加载,支持异步和顶层 await。

    需在 package.json 中设置 "type": "module" 或使用 .mjs 扩展名。

5. 动态加载(高级用法)

通过条件或异步加载模块:

if (process.env.NODE_ENV === 'production') { const prodModule = require('./prod-config');}// 动态路径(不推荐,可能影响性能)const dynamicModule = require(`./${moduleName}`);总结
  • 核心模块:直接通过名称导入(如 require('fs'))。
  • 第三方模块:需安装后通过名称导入(如 require('express'))。
  • 自定义模块:通过相对/绝对路径导入(如 require('./utils'))。
  • 性能:避免重复加载,优先使用静态导入。

通过合理使用 require(),可以高效管理 Node.js 项目的模块依赖。