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 提供了一些全局对象和全局函数,例如 global
、process
、console
、__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/');
});
解释示例代码
- 导入 http 模块:通过
require('http')
导入 Node.js 的 HTTP 模块。 - 创建服务器:使用
http.createServer
方法创建一个 HTTP 服务器。回调函数req, res
用于处理请求和响应。 - 设置响应头:使用
res.writeHead
方法设置响应头,指定状态码 200 和内容类型text/plain
。 - 响应内容:使用
res.end
方法发送响应内容并结束响应。 - 服务器监听端口:使用
server.listen
方法让服务器监听本地 IP 地址127.0.0.1
的 3000 端口。 - 启动服务器:服务器启动后,控制台会输出一条消息,指示服务器正在运行。
总结
Node.js 是一个强大且高效的服务器端 JavaScript 运行时环境,适合构建高性能的网络应用程序。理解其事件驱动、非阻塞 I/O 和模块系统是使用 Node.js 的基础。通过结合使用核心模块和 npm 包,可以快速开发和部署各种类型的应用程序。