Node.js 中有多少种 API 函数 ?

参考回答

在 Node.js 中,API 函数主要分为以下几大类,根据其功能模块进行划分,而不是具体的数量:

  1. 全局对象 API
    提供无需 require 就能直接使用的函数和变量,例如:

    • console.log()
    • setTimeout()
    • __dirname__filename
  2. 模块化 API
    Node.js 提供大量内置模块,每个模块包含不同的 API,例如:

    • 文件系统模块 (fs)fs.readFile()fs.writeFile()
    • HTTP 模块 (http)http.createServer()req.on()
    • 路径模块 (path)path.join()path.resolve()
  3. 事件驱动 API
    • EventEmitter 类提供事件相关的 API,例如 on()emit()
  4. 流式 API
    • 可读流和可写流的 API,例如 stream.readablestream.write()
  5. 异步控制 API
    • 提供异步操作的回调、Promise 和 async/await 支持的函数,例如 fs.promises

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);
    
    JavaScript
  • 路径模块 (path)
    • 操作路径:
    const path = require('path');
    console.log(path.join(__dirname, 'file.txt')); // 拼接路径
    
    JavaScript

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();
    
    JavaScript

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));
    
    JavaScript
  • 使用 async/await
    const readFile = async () => {
      try {
          const data = await fs.promises.readFile('file.txt', 'utf8');
          console.log(data);
      } catch (err) {
          console.error(err);
      }
    };
    readFile();
    
    JavaScript

6. 其他模块

  • 操作系统模块 (os):获取系统信息。
    const os = require('os');
    console.log(os.platform()); // 输出平台信息
    
    JavaScript
  • 加密模块 (crypto):执行加密操作。
    const crypto = require('crypto');
    const hash = crypto.createHash('sha256').update('Hello').digest('hex');
    console.log(hash);
    
    JavaScript

总结

Node.js 提供了大量模块化 API,每个模块包含丰富的功能。这些 API 的数量不断增长,但开发者通常按需引用特定模块。熟练掌握常用模块如 fshttppath 等是高效使用 Node.js 的关键。

发表评论

后才能评论