Express 入门全指南:从 0 搭建你的第一个 Node Web 服务器

Express 入门全指南:从 0 搭建你的第一个 Node Web 服务器

本文将带你从零开始,快速搭建一个基于 Express 的 Web 服务器,理解路由与中间件的执行机制,并给出详细注释与实践示例。


一、Express 是什么?

Express 是 Node.js 中最流行的 Web 服务器框架。

通过它可以非常方便地:

  • 搭建网站服务器;
  • 处理 HTTP 请求;
  • 管理路由与中间件;
  • 支持静态资源、Cookie、Session 等常见功能。

它的定位就像是:

「Node.js 的服务器开发框架」,帮助你快速构建一个可以响应网页请求的后端。


二、使用步骤

1️ 初始化项目

csharp 复制代码
yarn init -y

或使用 npm:

csharp 复制代码
npm init -y

2️ 安装 express

csharp 复制代码
yarn add express

3️ 创建服务器文件

创建一个 index.js 文件,写入以下代码👇

javascript 复制代码
// 1. 引入 express
const express = require("express")

// 2. 获取服务器实例(app 就代表整个 Web 应用)
const app = express()

/* 
  Express 默认不会处理任何请求,
  想要服务器能正确响应,就必须为它设置路由或中间件。
*/

三、路由(Route)

路由的作用:

根据"请求路径 + 请求方式"来决定由谁处理该请求。

javascript 复制代码
// GET 请求:访问页面或获取数据
app.get("/hello", (req, res) => {
  console.log("有人访问 /hello 了!")

  // 读取请求信息(req)
  console.log(req.url)

  // 响应客户端(res)
  res.send("<h1>这是我的第一个 Express 服务器</h1>")
})

常见请求方法:

  • GET:获取数据
  • POST:提交数据
  • PUT:更新数据
  • DELETE:删除数据

访问地址示例:

bash 复制代码
http://localhost:3000/hello

四、中间件(Middleware)

1. 什么是中间件?

中间件是 Express 的核心机制,用于在请求到达路由前后执行逻辑。

例如:打印日志、解析请求体、校验权限等。

定义格式:

javascript 复制代码
app.use((req, res, next) => {
  console.log("我是中间件!")
  next() // 调用 next() 表示进入下一个中间件或路由
})

⚠️ 注意:

  • next() 必须在响应结束前调用。
  • 如果调用了 res.send() 后仍执行 next(),会报错(因为响应已结束)。

2. 多个中间件顺序执行示例

javascript 复制代码
app.use((req, res, next) => {
  console.log("111", Date.now())
  next()
})

app.use((req, res, next) => {
  console.log("222", Date.now())
  next()
})

app.use((req, res) => {
  console.log("333", Date.now())
  res.send("<h1>333 - 响应结束</h1>")
})

执行结果:

复制代码
111 1739933280000
222 1739933280005
333 1739933280006

请求会从第一个中间件依次向下传递,直到一个中间件终止(比如调用 res.send())。


3. 路由与中间件的区别

特性 路由(app.get() 中间件(app.use()
区分请求方式 ✅ 是(GET、POST) ❌ 否
匹配路径 精确匹配 可匹配父级路径
是否自动放行 需手动调用 next()
常见用途 业务处理 日志、权限、静态资源等

五、启动服务器

javascript 复制代码
// 启动服务器
app.listen(3000, () => {
  console.log("✅ 服务器已启动:http://localhost:3000")
})

访问你的服务器:

arduino 复制代码
http://localhost:3000

六、完整示例

下面是一份整合了中间件与路由的完整 Express 示例:

javascript 复制代码
// 引入 express
const express = require("express")

// 创建应用实例
const app = express()

// 1️⃣ 中间件(全局)
app.use((req, res, next) => {
  console.log("【全局中间件】请求时间:", new Date().toLocaleString())
  next()
})

// 2️⃣ 路由定义
app.get("/", (req, res) => {
  res.send("<h1>首页 - 欢迎访问我的服务器</h1>")
})

app.get("/about", (req, res) => {
  res.send("<h1>关于我们</h1>")
})

// 3️⃣ 兜底中间件(404)
app.use((req, res) => {
  res.status(404).send("<h1>404 - 页面未找到</h1>")
})

// 4️⃣ 启动服务器
app.listen(3000, () => {
  console.log("🚀 服务器启动成功:http://localhost:3000")
})

七、常见问题与易错点

问题 原因 解决方案
Cannot set headers after they are sent 在响应结束后再次发送响应 确保 res.send() 之后不再调用 next()
无法访问服务器 端口占用或未启动 检查 app.listen() 是否执行、端口是否冲突
中间件不生效 未调用 next() 在中间件函数中调用 next() 放行请求

八、后续扩展(进阶内容)

  • 静态资源中间件app.use(express.static("public"))
  • 请求体解析app.use(express.json())app.use(express.urlencoded({ extended: true }))
  • Cookie / Session 管理
  • 模板引擎(EJS、Handlebars)
  • MVC 架构整合

总结

  • Express 是 Node.js 中最主流的 Web 框架;
  • 核心概念:路由中间件
  • 使用 app.listen() 启动服务器;
  • 理解请求处理链,是掌握 Express 的关键。

推荐阅读

相关推荐
oak隔壁找我3 小时前
Java 使用技巧与最佳实践
java·后端
oak隔壁找我3 小时前
SpringMVC 使用技巧与最佳实践
java·后端
oak隔壁找我3 小时前
Spring 框架使用技巧与最佳实践
java·后端
白衣鸽子3 小时前
MySql数据库同步技术:构建高可用架构的基石
数据库·后端
xyy1233 小时前
Visual Studio 添加测试项目
后端
京东云开发者3 小时前
集团前端部署新方案-技术篇(总体架构设计)
前端
DoveLx3 小时前
Spring Boot 事务管理:从基础到高级
java·后端
oak隔壁找我3 小时前
Spring Boot 使用技巧与最佳实践
java·后端·面试
虎子_layor3 小时前
Java线程池快速入门
java·后端