Node.js 模块详解

模块的概念

Node.js 运行在 V8 JavaScript 引擎上,通过 require() 函数导入相关模块来处理服务器端的各种进程。一个 Node.js 模块可以是一个函数库、类集合或其他可重用的代码,通常存储在一个或多个 .js 文件中。

例如,启动一个 Node.js 服务器时,我们需要导入 http 模块:

javascript 复制代码
const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
});

server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

模块的类型

Node.js 中的模块主要分为三种类型:

第三方模块

这些模块由独立开发者开发,并在 NPM 仓库中提供使用。要在项目中使用这些模块,需要先在全局或项目文件夹中安装它们。

例如,安装 Express 模块:

bash 复制代码
npm install express

使用 Express 模块:

javascript 复制代码
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});

内置模块

Node.js 运行时软件自带了一些核心模块,如 httpfsconsole 等。这些模块无需安装,但使用时仍需要通过 require() 函数导入(除了少数全局对象如 processbufferconsole)。

例如,使用 fs 模块读取文件:

javascript 复制代码
const fs = require('fs');

fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

本地模块

本地模块是你自己创建的 .js 文件,其中包含了你的应用程序所需的函数或类的定义。这些模块位于你的 Node.js 应用程序文件夹中,同样需要通过 require() 函数导入。

每个 .js 文件都有一个特殊的 module 对象,其 exports 属性用于向外部代码暴露特定的函数、对象或变量。

例如,创建一个名为 functions.js 的本地模块:

javascript 复制代码
// functions.js
exports.power = (x, y) => Math.pow(x, y);
exports.squareRoot = x => Math.sqrt(x);
exports.log = x => Math.log(x);

在主应用程序中使用这个本地模块:

javascript 复制代码
const mathFunctions = require('./functions');

console.log(mathFunctions.power(2, 3));  // 输出: 8
console.log(mathFunctions.squareRoot(16));  // 输出: 4
console.log(mathFunctions.log(10));  // 输出: 2.302585092994046

通过使用模块,我们可以将 Node.js 应用程序的功能分割成更小、更易管理的部分,提高代码的可读性和可维护性。

相关推荐
周小董6 小时前
[1367]npm 安装 canvas 报错 node-gyp ERR
前端·npm·node.js
张龙6871 天前
Node.js 内存泄漏排查实战:从内存曲线到堆快照,一条可复用的定位路径
性能优化·node.js
烂蜻蜓1 天前
Node.js入门教程(七):工作机制
node.js
凌云拓界2 天前
NodeVerdict | .ndv 二进制格式:为 WASM 解码器设计的紧凑布局
安全·架构·开源·node.js·编辑器·软件工程·wasm
凌云拓界2 天前
NodeVerdict | 性能门禁:把追踪数据变成 CI 规则
ci/cd·信息可视化·开源·node.js·bug·数据可视化·安全架构
烂蜻蜓2 天前
Node.js入门教程(五):NVM 管理多版本 Node.js
node.js
接着奏乐接着舞。2 天前
LLM 流式响应:网慢和断线怎么处理?
前端·人工智能·node.js·aigc
MartinYeung52 天前
npm爆发大规模供应链攻击 蠕虫污染 2000+ 个包版本: 深度技术剖析
前端·npm·node.js
鲟迹2 天前
NVM 管理Node.js版本
node.js
万敏3 天前
Vue3 全栈实战第五周:Vitest 单元测试从零搭建实战记录
vue.js·node.js·全栈