express教程

栏目: express 发布时间:2024-12-13

Express是一个基于node.js平台的快速、开放、极简的Web开发框架。它不对Node.js已有的特性进行二次抽象,而是在其基础上扩展了Web应用所需的基本功能。通过Express,开发者可以方便、快速地创建Web网站服务器或API接口服务器。以下是一篇详细的Express教程。

一、安装Express

  1. 前提条件:确保已经安装了Node.js和npm(Node包管理器)。

  2. 安装Express: 可以使用npm命令来安装Express。在项目目录下,运行以下命令:

    npm install express --save
    

    或者简写为:

    npm i -S express
    

二、创建基本的Web服务器

  1. 引入Express: 创建一个JavaScript文件(如server.js),并在其中引入Express模块:

    const express = require('express');
    
  2. 创建服务器应用程序: 使用Express创建一个服务器实例:

    const app = express();
    
  3. 定义路由: 使用app.get()方法定义GET请求的路由处理函数。例如,监听根路径/的GET请求:

    app.get('/', function(req, res) {
        res.send('Hello World');
    });
    
  4. 启动服务器: 使用app.listen()方法启动服务器,并监听指定的端口(如3000):

    app.listen(3000, function() {
        console.log('app is running at port 3000.');
    });
    
  5. 访问服务器: 在浏览器中访问http://localhost:3000/,应该会看到页面显示“Hello World”。

三、处理不同类型的请求

  1. 处理POST请求: 使用app.post()方法定义POST请求的路由处理函数。例如:

    app.post('/submit', function(req, res) {
        // 处理POST请求的数据
        res.send('Request received');
    });
    
  2. 获取URL中的查询参数: 通过req.query对象访问URL中的查询参数。例如:

    app.get('/search', function(req, res) {
        const query = req.query.q;
        res.send(`Search query: ${query}`);
    });
    
  3. 获取URL中的动态参数: 使用:匹配URL中的动态参数。例如:

    app.get('/user/:id', function(req, res) {
        const userId = req.params.id;
        res.send(`User ID: ${userId}`);
    });
    

四、托管静态资源

  1. **使用express.static()**: Express提供了一个express.static()中间件函数,用于托管静态资源(如图片、CSS文件、JavaScript文件等)。例如:
    app.use(express.static('public'));
    
    这样,public目录下的文件就可以通过http://localhost:3000/文件名的方式访问了。

五、中间件

  1. 理解中间件: 中间件是请求处理管道中的函数,可以访问请求对象(req)、响应对象(res)和管道中的下一个中间件函数(next)。

  2. 定义中间件: 使用app.use()方法定义全局中间件,使用路由对象的use()方法定义局部中间件。例如:

    app.use(function(req, res, next) {
        console.log('Request received');
        next();
    });
    
  3. 使用第三方中间件: 可以通过npm安装并使用第三方中间件,如body-parser用于解析请求体中的JSON或URL编码的数据。

六、路由机制

  1. 定义路由: 路由是由一个URI、HTTP请求方法(如GET、POST等)和若干个处理函数组成的。在Express中,可以使用app.METHOD(path, handler)的形式定义路由。

  2. 路由参数: 除了URL中的查询参数和动态参数外,还可以使用正则表达式匹配路由路径。

七、连接数据库

  1. 安装数据库驱动: 根据所使用的数据库类型(如MySQL、MongoDB等),安装相应的Node.js驱动。

  2. 建立数据库连接: 在应用程序中创建数据库连接文件,并在需要时引入和使用。

  3. 操作数据库: 在路由处理函数中执行数据库查询或更新操作,并将结果返回给客户端。

八、综合案例

以下是一个综合案例,展示了如何使用Express创建一个简单的用户管理系统:

const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');

const app = express();
const port = 3000;

// 配置body-parser中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// 配置数据库连接
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'test'
});

connection.connect();

// 定义用户路由
app.get('/users', (req, res) => {
    const { userName } = req.query;
    let sql = 'SELECT * FROM users';
    if (userName) {
        sql += ` WHERE user_name LIKE '%${userName}%'`;
    }
    connection.query(sql, (error, results) => {
        if (error) {
            return res.status(500).send({ msg: 'Database error' });
        }
        res.send(results);
    });
});

app.post('/users', (req, res) => {
    const { userName, userPhone } = req.body;
    const sql = `INSERT INTO users (user_name, user_phone) VALUES ('${userName}', '${userPhone}')`;
    connection.query(sql, (error, results) => {
        if (error) {
            return res.status(500).send({ msg: 'Database error' });
        }
        res.send({ msg: 'User added successfully' });
    });
});

// 启动服务器
app.listen(port, () => {
    console.log(`Server running at http://localhost:${port}`);
});

在这个案例中,我们创建了一个简单的用户管理系统,可以查询和添加用户信息。注意,这里的数据库查询语句是直接拼接的,为了安全起见,建议使用参数化查询或ORM框架来避免SQL注入攻击。

通过以上步骤和案例,你应该已经对Express有了基本的了解,并能够使用它创建简单的Web应用程序。

本文地址:https://www.tides.cn/p_express-tutorial