nodejs的网络模块都有哪些?
封面图
•
2026-01-14
•
nodejs
306
0
0
0
在 Node.js 中,网络模块主要用于处理 HTTP、TCP、UDP 等网络通信。Node.js 提供了多个内置的网络相关模块,以下是一些主要的网络模块及其用途: --- ### 一、核心网络模块 #### 1. **`http` 模块** 用于创建 HTTP 服务器和客户端。 - **功能**: - 创建 HTTP 服务器(`http.createServer()`) - 发起 HTTP 请求(`http.request()` 或 `http.get()`) - 处理 HTTP 请求和响应 - **示例代码**: ```js 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/'); }); ``` --- #### 2. **`https` 模块** 用于创建 HTTPS 服务器和客户端,基于 `http` 模块,但支持 SSL/TLS 加密。 - **功能**: - 创建 HTTPS 服务器 - 发起 HTTPS 请求 - **示例代码**: ```js const https = require('https'); const fs = require('fs'); const options = { key: fs.readFileSync('server.key'), cert: fs.readFileSync('server.crt') }; https.createServer(options, (req, res) => { res.writeHead(200); res.end("Secure Hello World\n"); }).listen(443); ``` --- #### 3. **`net` 模块** 用于创建 TCP 服务器和客户端。 - **功能**: - 创建 TCP 服务器(`net.createServer()`) - 创建 TCP 客户端(`net.createConnection()`) - **示例代码**: ```js const net = require('net'); const server = net.createServer((socket) => { socket.write('Hello from server!\n'); socket.pipe(socket); // 回显 }); server.listen(3000, '127.0.0.1', () => { console.log('TCP server listening on port 3000'); }); ``` --- #### 4. **`dgram` 模块** 用于创建 UDP 服务器和客户端。 - **功能**: - 创建 UDP 服务器(`dgram.createSocket()`) - 发送和接收 UDP 数据包 - **示例代码**: ```js const dgram = require('dgram'); const server = dgram.createSocket('udp4'); server.on('message', (msg, rinfo) => { console.log(`Received ${msg} from ${rinfo.address}:${rinfo.port}`); }); server.on('listening', () => { const address = server.address(); console.log(`UDP server listening on ${address.address}:${address.port}`); }); server.bind(41234); ``` --- ### 二、其他常用网络模块 #### 5. **`url` 模块** 虽然不完全是“网络”模块,但它常用于解析 URL,特别是在 HTTP 请求中。 - **功能**: - 解析 URL 字符串 - 构造 URL 对象 - **示例代码**: ```js const url = require('url'); const parsedUrl = url.parse('http://example.com/path?query=1'); console.log(parsedUrl); ``` --- #### 6. **`querystring` 模块** 用于解析和格式化 URL 查询字符串。 - **功能**: - `querystring.parse()`:解析查询字符串 - `querystring.stringify()`:将对象转为查询字符串 - **示例代码**: ```js const querystring = require('querystring'); const qs = querystring.parse('key1=value1&key2=value2'); console.log(qs); ``` --- #### 7. **`stream` 模块** 虽然不是专门的网络模块,但在处理网络数据流时非常关键,如 HTTP 请求/响应、TCP/UDP 数据传输等。 - **功能**: - 支持流式读写(如 `Readable`, `Writable`, `Duplex`, `Transform`) --- ### 三、第三方网络库(推荐) 除了 Node.js 原生模块外,社区还提供了很多强大的网络库,比如: - **`axios`**:HTTP 客户端,支持浏览器和 Node.js。 - **`request`**(已弃用):旧版 HTTP 客户端。 - **`got`**:现代、轻量级的 HTTP 客户端。 - **`ws`**:WebSocket 库。 - **`express`**:基于 `http` 的 Web 框架。 - **`socket.io`**:实时双向通信库。 --- ### 总结 | 模块 | 功能 | 说明 | |------|------|------| | `http` | HTTP 服务端/客户端 | 基础 HTTP 协议 | | `https` | HTTPS 服务端/客户端 | 基于 SSL/TLS 的 HTTP | | `net` | TCP 服务端/客户端 | 基于 TCP 的通信 | | `dgram` | UDP 服务端/客户端 | 基于 UDP 的通信 | | `url` | URL 解析 | 用于解析 URL 字符串 | | `querystring` | 查询字符串处理 | 处理 URL 查询参数 | | `stream` | 流式数据处理 | 用于处理大数据流 | 如果你有具体的使用场景(比如构建 REST API、WebSocket 通信、TCP 服务等),我可以进一步帮你选择合适的模块或工具。
上一篇:
如何应用 nodejs中的 Buffer?
下一篇:
npm是什么?
标题录入,一次不能超过6条
留言
评论