《Node.js手册》是一本全面介绍Node.js编程技术的指南,涵盖从基础概念到高级应用的知识,帮助开发者构建高效、可扩展的服务器端应用程序。
### Node.js 手册知识点详述
#### 概要(Synopsis)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它采用事件驱动、非阻塞 IO 的模型,使其轻量且高效,非常适合构建高速和可扩展的应用程序。
#### 全局对象(Global Objects)
在 Node.js 中,全局对象提供了许多内置函数和变量,并可以直接访问而无需使用 `require()` 函数。
- **global**: 提供对所有全局变量的访问。
- **process**: 包含当前运行中的 Node.js 进程的信息与控制功能。
- **require()**: 加载并返回模块导出的内容。
- **__filename**: 当前执行脚本段落件的绝对路径。
- **__dirname**: 当前执行脚本所在目录的绝对路径。
- **module**: 代表当前模块的对象。
#### 定时器(Timers)
Node.js 提供了用于设置定时任务的功能,包括延时或周期性地执行代码的能力。
- **setTimeout(callback, delay, [arg], ...)**: 在指定延迟时间后调用回调函数。
- **clearTimeout(timeoutId)**: 取消由 `setTimeout` 设置的计时器。
- **setInterval(callback, delay, [arg], ...)**: 周期性地调用给定的回调函数。
- **clearInterval(intervalId)**: 取消由 `setInterval` 创建的定时任务。
#### 模块(Modules)
Node.js 的模块系统允许开发者组织和重用代码,支持内建核心模块、文件模块及从特定目录加载第三方库等功能。
- **Core Modules**: 内置的核心模块包括 http, fs 和 path 等。
- **File Modules**: 用户编写的自定义模块通常位于 `.` 或 `..` 目录下。
- **Loading from `node_modules` Folders**: Node.js 会从项目目录下的 `node_modules` 文件夹中加载第三方库的模块。
- **Folders as Modules**: 包含文件名以 index 开头(例如 index.js)的文件夹也可作为模块导入使用。
#### 进程管理(process)
进程对象提供对当前 Node.js 应用程序运行时环境的信息和控制功能,是全局可访问的对象之一。
- **Event: exit**: 当应用程序准备退出时触发。
- **Event: uncaughtException**: 在发生未捕获的异常情况下被调用。
- **Signal Events**: 接收到操作系统信号后触发相应事件。
- **process.stdout**, **stderr** 和 **stdin**: 分别对应标准输出、错误输出和输入流对象。
#### 工具模块(util)
`util` 模块提供了一些通用工具函数,用于处理数据及调试目的。
- **util.debug(string)**: 输出调试信息。
- **util.log(string)**: 将带有时间戳的字符串写入标准输出。
- **util.inspect(object, showHidden=false, depth=2)**: 生成一个可读性强的对象表示形式。
- **util.pump(readableStream, writableStream, [callback])**: 实现从可读流到可写流的数据传输。
#### 事件模块(Events)
`events` 模块提供了基本的事件发射器功能,用于构建基于事件驱动的应用程序架构。
- **emitter.addListener(event, listener)** 和 **on**: 添加新的监听函数。
- **once**: 只触发一次的监听者设置方法。
- **removeListener** 和 **removeAllListeners**: 移除特定或所有监听者。
- **emit(event, [arg1], [arg2])**: 触发指定事件。
这些知识点涵盖了 Node.js 的基础概念和重要功能,对于理解和使用 Node.js 构建应用程序至关重要。