Node.js Web开发初体验:Express 框架

82 阅读3分钟

在 Node.js 中,如果直接使用原生的 http 模块来编写 Web 服务器,虽然可以实现基本的请求和响应处理,但代码会变得非常繁琐。 例如,你需要手动解析请求体、拼接路由、设置各种响应头和状态码,代码可读性和维护性都不高。在实际项目开发中,绝大多数开发者都会选择基于成熟的 Web 框架进行开发。这样不仅可以极大提升开发效率,还能让项目结构更加清晰、易于扩展和维护。

主流 Node.js Web 框架

目前在 Node.js 生态中,最流行的两个 Web 框架分别是:

  • Express:老牌、功能丰富、易用性强,内置常用中间件,社区活跃,文档完善。
  • Koa:由 Express 原班人马打造,更加轻量和现代化,极简核心,所有功能都通过中间件按需加载。

Express 和 Koa 的底层原理是一致的,都是基于“中间件(middleware)”机制来处理请求和响应。
主要区别在于:Express 内置了许多常用功能和中间件;而 Koa 只保留最核心的部分,其他功能都需要开发者自行选择并安装相应的中间件。

什么是中间件?

中间件(Middleware)是 Web 框架的核心概念。本质上,中间件就是一系列函数,这些函数在请求到达最终处理逻辑之前,对请求和响应进行加工处理。比如:

  • 解析请求体(如 JSON、表单数据)
  • 处理跨域(CORS)
  • 记录日志
  • 权限校验
  • 统一错误处理

中间件的典型特征:

  • 每个中间件函数可以访问请求对象(req)、响应对象(res)以及下一个中间件的函数(next)。
  • 可以通过链式调用的方式,将多个中间件组合在一起,形成灵活的处理流程。
  • 大部分通用功能都可以借助框架自带或社区中间件实现,无需重复造轮子。

初体验

 npm install express

main.js

 // 导入express
 import express from 'express';
 ​
 // 创建express实例
 const app = express();
 ​
 // 创建后端路由
 // 如果访问了不存在的路由或使用了未被支持的请求方式,Express 会自动处理,返回错误状态码(通常是 404)和简单的错误页面。
 ​
 // 在express中,每个路由和请求方法的处理都是分开的。
 // 不需要像 原生http模块那样 把所有的逻辑放在一个回调函数中
 app.post('/login', (req, res) => {
   // 返回响应体,并结束请求 「 Content-Type 的值为 text/plain 」
   res.end('login');
 });
 ​
 // 回调函数也可以接收 请求体对象 和 响应体对象
 // 他们是基于原生http模块的 请求体对象 和 响应体对象 并进行了功能扩展
 app.get('/products', (req, res) => {
   const products = [
     { id: 1, name: 'iphone', price: 1000 },
     { id: 2, name: 'ipad', price: 2000 },
     { id: 3, name: 'macbook', price: 3000 },
   ]
 ​
   // 1. 自动设置响应头 Content-Type: application/json
   // 2. 自动将对象转换为 JSON 字符串
   // 3. 自动设置状态码 200
   // 4. 返回响应体,并结束请求
   res.json(products)
 });
 ​
 // 假设请求路径为 /profile/123?name=张三&age=20
 app.get('/profile/:id', (req, res) => {
   // 获取请求参数
   const id = req.params.id // => 123
   const query = req.query // => { name: '张三', age: '20' }
   res.json({
     id,
     query,
   })
 })
 ​
 // 启动服务器
 app.listen(3000, () => {
   console.log('Server is running on port 3000');
 });

脚手架工具推荐

为了快速搭建项目结构,Express 和 Koa 都有对应的项目生成器(脚手架):

  • express-generator(官方)
    命令行工具:express,用法示例:

    npx express my-app
    

    这会自动生成一个标准的 Express 项目骨架。

  • koa-generator(社区)
    命令行工具:koa,用法示例:

    npx koa my-koa-app
    

具体使用方法和参数说明,可查阅各自的官方文档。