Express 是一个基于 Node.js 的快速、简洁的 Web 开发框架,它为开发人员提供了一系列的工具和选项,可以快速创建 Web 应用程序和 API。在本文中,将介绍 Express 的基本概念、核心功能和代码示例,帮助初学者快速入门。

1、基本概念

在 Express 中,有几个核心概念需要了解:

  • Application:应用程序对象,它是 Express 框架创建的实例。
  • Request:请求对象,它包含了客户端请求的所有信息,例如 URL、HTTP 方法、头信息等。
  • Response:响应对象,它包含了将要发送给客户端的信息,例如响应状态码、头信息、响应体等。
  • Middleware:中间件是一种可复用的代码,它可以处理请求和响应。中间件可以执行各种任务,例如路由处理、身份验证、日志记录等。
2、核心功能

Express 的核心功能包括:

  • 路由:Express 提供了一种方便的方式来定义路由,可以处理不同的 URL 路径和 HTTP 方法。
  • 中间件:Express 支持各种中间件,可以用于处理请求和响应。
  • 模板引擎:Express 支持各种模板引擎,可以用于创建动态页面。
  • 数据库操作:Express 可以方便地进行数据库操作,例如查询、插入、更新等。
  • 错误处理:Express 提供了一种方便的方式来处理错误,可以统一处理异常和错误。
3、代码示例
3.1 普通示例

下面是一个简单的 Express 应用程序示例:

const express = require('express');
const app = express();
const port = 3000;
// 处理 GET 请求
app.get('/', function (req, res) {
  res.send('Hello World!');
});
// 处理 POST 请求
app.post('/', function (req, res) {
  res.send('Received a POST request');
});
// 启动应用程序
app.listen(port, function () {
  console.log(`App listening at http://localhost:${port}`);
});

在上面的示例中,我们首先引入了 Express 模块,并创建了一个 Express 应用程序对象。然后定义了两个路由处理函数,分别用于处理 GET 和 POST 请求。最后,启动了应用程序并指定了监听的端口号。

3.2 中间件示例

除了路由处理函数外,Express 还提供了一些中间件,可以用于处理请求和响应。下面是一个使用中间件的示例:

const express = require('express');
const app = express();
const port = 3000;
// 使用中间件处理请求头信息
app.use(function (req, res, next) {
  console.log('Request headers:', req.headers);
  next();
});
// 处理 GET 请求
app.get('/', function (req, res) {
  res.send('Hello World!');
});
// 启动应用程序
app.listen(port, function () {
  console.log(`App listening at http://localhost:${port}`);
});

在上面的示例中,使用 app.use() 方法引入了一个中间件函数。这个函数会在每个请求到达时被调用,并输出请求头信息。然后我们定义了一个路由处理函数,用于处理 GET 请求。最后,启动了应用程序并指定了监听的端口号。

3.3 MongoDB操作示例

在 Express 中,常见的数据库操作包括连接数据库、查询数据、插入数据、更新数据和删除数据等。下面是一个使用 MongoDB 和 Mongoose 模块进行数据库操作的示例:

const express = require('express');
const mongoose = require('mongoose');
const app = express();
// 连接 MongoDB 数据库
mongoose.connect('mongodb://localhost/test', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});
// 定义一个模型
const UserSchema = new mongoose.Schema({
  name: String,
  age: Number
});
const User = mongoose.model('User', UserSchema);
// 处理 POST 请求
app.post('/users', function (req, res) {
  const user = new User({ name: req.body.name, age: req.body.age });
  user.save().then(doc => {
    res.send(doc);
  }).catch(err => {
    res.status(500).send(err);
  });
});
// 处理 GET 请求
app.get('/users', function (req, res) {
  User.find().then(docs => {
    res.send(docs);
  }).catch(err => {
    res.status(500).send(err);
  });
});
// 启动应用程序
app.listen(3000, function () {
  console.log('App listening at http://localhost:3000');
});

在上面的示例中,首先引入了 Express 和 Mongoose 模块,并使用 mongoose.connect() 方法连接了本地 MongoDB 数据库。然后,定义了一个 User 模型,它包含了 name 和 age 两个字段。接着,我们使用 app.post() 方法定义了一个处理 POST 请求的路由处理函数,它接收一个用户对象作为请求体,并使用 User 模型的 save() 方法将该对象保存到数据库中。同样地,使用 app.get() 方法定义了一个处理 GET 请求的路由处理函数,它使用 User 模型的 find() 方法查询所有用户对象,并将结果发送给客户端。最后,使用 app.listen() 方法启动了应用程序,并指定了监听的端口号。

3.4 MySQL操作示例

要在Express中使用MySQL数据库操作,您需要使用一个MySQL模块或库来连接和操作数据库。以下是一个使用mysql模块进行Express中MySQL数据库操作的示例:

首先,需要安装mysql模块。在项目目录中打开终端或命令提示符,并运行以下命令:

npm install mysql

接下来,需要创建一个Express应用程序,并在其中设置数据库连接和处理逻辑。以下是一个示例代码:

const express = require('express');
const mysql = require('mysql');
const app = express();
const port = 3000;
// 创建数据库连接
const db = mysql.createConnection({
  host: 'localhost',
  user: 'your_username',
  password: 'your_password',
  database: 'your_database'
});
// 连接到数据库
db.connect((err) => {
  if (err) {
    throw err;
  console.log('Connected to MySQL database!');
});
// 处理 GET 请求
app.get('/', function (req, res) {
  // 查询数据
  db.query('SELECT * FROM your_table', function (error, results, fields) {
    if (error) {
      res.status(500).send(error);
    } else {
      res.send(results);
  });
});
// 启动应用程序
app.listen(port, function () {
  console.log(`App listening at http://localhost:${port}`);
});

在上面的示例中,首先引入了express和mysql模块。然后,创建了一个数据库连接对象db,并指定了连接所需的参数,例如主机名、用户名、密码和数据库名称。接下来,使用db.connect()方法连接到数据库。如果连接成功,将在控制台输出一条消息。然后,使用db.query()方法执行了一个查询语句,从名为your_table的表中检索所有数据。查询结果将通过回调函数返回,并在响应中发送给客户端。最后,使用app.listen()方法启动了应用程序,并指定了监听的端口号。