跳到主要内容

node

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,允许你在服务器端运行 JavaScript 代码。以下是 Node.js 的一些基本概念和特性:

1. 事件驱动架构

Node.js 采用事件驱动架构,通过事件循环(Event Loop)处理并发操作。它基于事件和回调机制,高效处理大量的 I/O 操作。

2. 非阻塞 I/O

Node.js 使用非阻塞 I/O 模型,使其适合 I/O 密集型应用程序。传统的阻塞 I/O 模型会等待操作完成后才继续执行,而非阻塞 I/O 模型则会立即返回并继续执行其他任务,当操作完成后再触发回调函数。

3. 单线程

Node.js 是单线程的,但通过事件循环和非阻塞 I/O,可以高效处理并发请求。Node.js 通过工作线程(worker threads)或子进程(child processes)处理 CPU 密集型任务,以避免阻塞事件循环。

4. 模块系统

Node.js 使用 CommonJS 模块系统,使得代码组织和复用变得简单。每个文件都是一个模块,使用 require 导入模块,使用 module.exports 导出模块。

5. 包管理器

Node.js 的包管理器是 npm(Node Package Manager),用于安装、管理和共享 JavaScript 代码包。npm 是世界上最大的开源库生态系统之一。

6. 全局对象

Node.js 提供了一些全局对象和全局函数,例如 globalprocessconsole__dirname__filename 等。

7. 主要模块

Node.js 提供了一些核心模块,用于处理文件系统、网络、HTTP、流等常见操作。常见模块包括:

  • fs:文件系统模块
  • http:HTTP 协议模块
  • net:网络模块
  • stream:流处理模块
  • path:路径处理模块
  • os:操作系统信息模块

示例代码

以下是一个简单的 Node.js HTTP 服务器示例:

const http = require('http');

// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
// 设置响应头
res.writeHead(200, {'Content-Type': 'text/plain'});

// 响应内容
res.end('Hello, World!\n');
});

// 服务器监听端口
server.listen(3000, '127.0.0.1', () => {
console.log('Server running at http://127.0.0.1:3000/');
});

解释示例代码

  1. 导入 http 模块:通过 require('http') 导入 Node.js 的 HTTP 模块。
  2. 创建服务器:使用 http.createServer 方法创建一个 HTTP 服务器。回调函数 req, res 用于处理请求和响应。
  3. 设置响应头:使用 res.writeHead 方法设置响应头,指定状态码 200 和内容类型 text/plain
  4. 响应内容:使用 res.end 方法发送响应内容并结束响应。
  5. 服务器监听端口:使用 server.listen 方法让服务器监听本地 IP 地址 127.0.0.1 的 3000 端口。
  6. 启动服务器:服务器启动后,控制台会输出一条消息,指示服务器正在运行。

总结

Node.js 是一个强大且高效的服务器端 JavaScript 运行时环境,适合构建高性能的网络应用程序。理解其事件驱动、非阻塞 I/O 和模块系统是使用 Node.js 的基础。通过结合使用核心模块和 npm 包,可以快速开发和部署各种类型的应用程序。