Node.js

基于Chrome V8引擎的JavaScript运行时,构建高性能网络应用。让JavaScript在服务端运行,开启全栈开发时代。

2009发布年份
Ryan Dahl创始人

核心特性

Node.js 的设计哲学和关键技术特性

事件驱动架构

基于事件循环的非阻塞I/O模型,单线程处理高并发请求。适合I/O密集型应用,如Web服务器、API服务。

事件循环非阻塞I/O高并发

npm生态系统

拥有200万+包的庞大生态系统,覆盖几乎所有开发需求。包管理工具npm是JavaScript生态的标准。

npm200万+包生态系统

V8引擎性能

基于Chrome V8引擎,JavaScript代码被编译为机器码执行。性能优异,适合构建高性能应用。

V8引擎JIT编译高性能

跨平台支持

支持Windows、macOS、Linux等主流操作系统。可以开发桌面应用、命令行工具、物联网应用。

跨平台桌面应用CLI工具

生态系统

围绕 Node.js 构建的完整工具链

Web框架

Express、Koa、Fastify、NestJS等成熟框架。提供路由、中间件、模板引擎等完整Web开发功能。

ExpressKoaFastify

测试工具

Jest、Mocha、Vitest等测试框架。支持单元测试、集成测试、端到端测试。

JestMochaVitest

数据库驱动

支持MySQL、PostgreSQL、MongoDB、Redis等所有主流数据库。提供ORM和ODM工具。

SequelizePrismaMongoose

实时通信

Socket.io、ws等WebSocket库。支持实时聊天、游戏、协作编辑等实时应用。

Socket.iowsWebSocket

微服务架构

支持gRPC、消息队列、服务发现等微服务技术。适合构建分布式系统。

gRPCRabbitMQKafka

部署工具

PM2、Docker、Kubernetes等部署和运维工具。支持集群、负载均衡、自动重启。

PM2DockerKubernetes

快速入门

# 安装Node.js
# 从官网下载安装包或使用nvm管理版本
nvm install 20
nvm use 20

# 创建Node.js项目
mkdir my-node-app
cd my-node-app
npm init -y

# 安装Express框架
npm install express

# 创建服务器文件
echo 'const express = require("express");
const app = express();
const port = 3000;

app.get("/", (req, res) => {
    res.send("Hello, Node.js!");
});

app.listen(port, () => {
    console.log(`Server running at http://localhost:${port}`);
});' > server.js

# 启动服务器
node server.js

配置示例

// package.json
{
  "name": "my-node-app",
  "version": "1.0.0",
  "description": "Node.js application",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "dev": "nodemon server.js",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "express": "^4.18.2",
    "cors": "^2.8.5",
    "dotenv": "^16.3.1"
  },
  "devDependencies": {
    "nodemon": "^3.0.1",
    "jest": "^29.7.0",
    "eslint": "^8.50.0"
  }
}

学习资源

官方文档

全面的API文档、指南和教程。

nodejs.org/en/docs →

Node.js GitHub

源代码仓库,可查看源码和参与贡献。

github.com/nodejs/node →

npm文档

npm包管理器的完整文档和教程。

docs.npmjs.com →

Node.js最佳实践

社区维护的Node.js最佳实践指南。

Node.js Best Practices →

与其他运行时对比

vs Deno

Node.js生态更成熟,包管理更简单。Deno安全性更好,默认TypeScript支持,但生态较小。

生态系统安全性TypeScript

vs Bun

Node.js稳定性更好,生态更完善。Bun性能更快,内置打包器、测试框架,但较新。

性能稳定性生态

vs Python

Node.js适合I/O密集型和实时应用。Python适合数据科学、机器学习、脚本任务。

应用场景性能生态