Express框架使用

一、Express框架概述
  1. 定义与定位
    Express是基于Node.js的轻量级Web开发框架,旨在简化HTTP请求处理、路由管理和中间件集成等任务。其核心定位是提供一套高效的API,帮助开发者快速构建Web应用和RESTful服务,避免原生Node.js的复杂底层操作。

  2. 核心价值

  • 封装优化:将Node.js原生http模块的重复代码(如请求解析、状态码处理)抽象为简洁的API。
  • 中间件生态:支持通过中间件按需扩展功能(如日志、会话管理),形成模块化开发模式。

  • 高效路由:提供直观的路由定义语法,支持RESTful风格API设计。


二、安装与入门
  1. 环境准备

    • 安装Node.js(官网下载)。

    • 初始化项目并安装Express:

      mkdir my-express-app && cd my-express-app
      npm init -y
      npm install express

  2. 入门示例

    
    // app.js
    const express = require('express');
    const app = express();
    const port = 3000;
    
    // 处理根路径的GET请求
    app.get('/', (req, res) => {
      res.send('Hello, Express!');
    });
    
    // 启动服务器
    app.listen(port, () => {
      console.log(`服务器运行在 http://localhost:${port}`);
    });

    执行node app.js,访问http://localhost:3000即可看到结果。


三、核心概念:路由(Routing)
  1. 路由定义
    路由由三部分组成:HTTP方法、路径和处理器函数。

    
    app.get('/users/:id', (req, res) => {
      const userId = req.params.id; // 获取路由参数
      res.send(`用户ID: ${userId}`);
    });

  2. 路由拆分与模块化

    • 子路由示例routes/user.js):

      const express = require('express');
      const router = express.Router();
      
      router.get('/profile', (req, res) => {
        res.send('用户个人中心');
      });
      
      module.exports = router;

    • 主文件挂载

      const userRouter = require('./routes/user');
      app.use('/user', userRouter); // 访问路径:/user/profile


四、核心概念:中间件(Middleware)
  1. 中间件执行机制
    中间件按定义顺序执行,需调用next()传递控制权。

    
    // 日志中间件
    app.use((req, res, next) => {
      console.log(`请求时间: ${new Date()}`);
      next(); // 必须调用以继续后续处理
    });

  2. 中间件分类

    • 错误处理中间件

      
      app.use((err, req, res, next) => {
        console.error(err.stack);
        res.status(500).send('服务器错误!');
      });

    • 内置中间件

      
      app.use(express.json());       // 解析JSON请求体
      app.use(express.urlencoded({ extended: true })); // 解析表单数据
      app.use(express.static('public')); // 托管静态文件

    • 第三方中间件(以morgan为例):

      npm install morgan
      
      const morgan = require('morgan');
      app.use(morgan('dev')); // 记录请求日志


五、HTTP请求与响应处理
  1. 请求对象(req)

    • req.query:获取URL查询参数(如/search?q=express中的q)。

    • req.body:获取POST请求体(需先启用express.json()express.urlencoded())。req.body:获取POST请求体(需先启用express.json()express.urlencoded())。

  2. 响应对象(res)

    • res.status(404).send('Not Found'):设置状态码并发送响应。

    • res.json({ success: true }):发送JSON响应。res.json({ success: true })发送JSON响应。


六、视图引擎与模板
  1. EJS配置

    npm install ejs

    
    app.set('view engine', 'ejs'); // 设置模板引擎
    app.set('views', path.join(__dirname, 'views')); // 模板目录

  2. 模板渲染示例

    htmlHTML格式

    
    

    <%= title %>

      <% items.forEach(item => { %>
    • <%= item %>
    • <% }) %>

    app.get('/', (req, res) => {
      res.render('home', { 
        title: '首页',
        items: ['Node.js', 'Express', 'EJS']
      });
    });


七、应用部署
  • 本地测试

启动:node app.js或使用nodemon实现热重载。

  • 生产环境部署

使用PM2管理进程

npm install pm2 -g
pm2 start app.js --name "my-express-app"
pm2 save
pm2 startup

你可能感兴趣的:(Node.js,web开发,express,node.js,开发语言)