Node.js 中有多少种 API 函数 ?
参考回答
在 Node.js 中,API 函数主要分为以下几大类,根据其功能模块进行划分,而不是具体的数量:
- 全局对象 API
提供无需require就能直接使用的函数和变量,例如:console.log()setTimeout()__dirname和__filename
- 模块化 API
Node.js 提供大量内置模块,每个模块包含不同的 API,例如:- 文件系统模块 (
fs):fs.readFile()、fs.writeFile() - HTTP 模块 (
http):http.createServer()、req.on() - 路径模块 (
path):path.join()、path.resolve()
- 文件系统模块 (
- 事件驱动 API
EventEmitter类提供事件相关的 API,例如on()、emit()。
- 流式 API
- 可读流和可写流的 API,例如
stream.readable、stream.write()。
- 可读流和可写流的 API,例如
- 异步控制 API
- 提供异步操作的回调、Promise 和
async/await支持的函数,例如fs.promises。
- 提供异步操作的回调、Promise 和
Node.js 的 API 是模块化的,不直接统计具体数量,而是根据应用场景选择使用。
详细讲解与拓展
1. 全局对象 API
这些 API 是全局可用的,无需显式导入:
– 常见方法:
“`javascript
console.log('Hello, World!'); // 输出到控制台
setTimeout(() => console.log('Timeout'), 1000); // 定时器
“`
– **常见全局变量**:
– `__dirname`: 当前脚本所在的目录。
– `__filename`: 当前脚本的完整路径。
2. 模块化 API
Node.js 的核心 API 按模块划分,以下是一些常见模块及其功能:
– 文件系统模块 (fs):
– 同步方法:
“`javascript
const fs = require('fs');
const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);
“`
– 异步方法:
“`javascript
fs.readFile(‘file.txt’, ‘utf8’, (err, data) => {
if (err) throw err;
console.log(data);
});
“`
- HTTP 模块 (
http):- 创建 HTTP 服务:
const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World'); }); server.listen(3000); - 路径模块 (
path):- 操作路径:
const path = require('path'); console.log(path.join(__dirname, 'file.txt')); // 拼接路径
3. 事件驱动 API
Node.js 基于事件驱动,EventEmitter 是核心:
– 自定义事件:
“`javascript
const EventEmitter = require('events');
const emitter = new EventEmitter();
emitter.on('message', (arg) => {
console.log('Message received:', arg);
});
emitter.emit('message', 'Hello!');
“`
4. 流式 API
流是 Node.js 的核心概念,用于处理数据的读写:
– 可读流:
“`javascript
const fs = require('fs');
const readableStream = fs.createReadStream('file.txt');
readableStream.on('data', (chunk) => {
console.log(chunk.toString());
});
“`
- 可写流:
const writableStream = fs.createWriteStream('output.txt'); writableStream.write('Hello, Stream!'); writableStream.end();
5. 异步控制 API
Node.js 提供强大的异步编程支持:
– 使用回调:
“`javascript
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
“`
- 使用
Promise:fs.promises.readFile('file.txt', 'utf8') .then((data) => console.log(data)) .catch((err) => console.error(err)); - 使用
async/await:const readFile = async () => { try { const data = await fs.promises.readFile('file.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } }; readFile();
6. 其他模块
- 操作系统模块 (
os):获取系统信息。const os = require('os'); console.log(os.platform()); // 输出平台信息 - 加密模块 (
crypto):执行加密操作。const crypto = require('crypto'); const hash = crypto.createHash('sha256').update('Hello').digest('hex'); console.log(hash);
总结
Node.js 提供了大量模块化 API,每个模块包含丰富的功能。这些 API 的数量不断增长,但开发者通常按需引用特定模块。熟练掌握常用模块如 fs、http、path 等是高效使用 Node.js 的关键。