likes
comments
collection
share

5分钟node.js入门之Express

作者站长头像
站长
· 阅读数 20

一、前言

  如果您是一个前端开发(后端码仔不想看的可以出门右拐😁),那么您可能(绝对)已经听说过Node.js。它是一个基于JavaScript的运行时环境,可以让开发人员在服务器端运行JavaScript代码。

  如果你想学习Node.js的话,接下来几篇文章将帮助你快速入门(了解😳)。在学习Node.js之前,你需要了解Node.js生态的各种工具和框架。   其中,Express是一个广泛使用的Web应用程序框架,它可以帮助你更轻松地构建可靠的Web应用程序。在本篇教程中,我们将介绍Express的基本用法和实例演示。

二、准备工作

  在开始学习Express之前,我们需要先安装Node.js,并建立一个简单的Web应用程序。你可以通过以下步骤完成这些操作:

1. 安装Node.js

在Node.js官网下载并安装最新版本的Node.js。

2. 创建一个Web应用程序

创建一个名为“myapp”的文件夹,并在其中创建一个名为“index.js”的文件。然后,复制以下代码到“index.js”文件中:

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

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

3. 启动Web应用程序

在命令行中进入“myapp”文件夹,并运行以下命令启动Web应用程序:

node index.js

现在,你已经准备好开始学习Express了。

三、Express的基本用法

前言:在使用Express之前,需要先了解Node.js的http模块和中间件的概念。

http模块是Node.js内置的模块之一,提供了创建HTTP服务器和客户端的功能。通过http.createServer()方法可以创建一个HTTP服务器实例,该方法接受一个回调函数作为参数,这个回调函数会在每一次收到请求时被调用。回调函数的参数包括代表HTTP请求和HTTP回应的request对象和response对象。Express框架就是建立在http模块之上的,它对http模块进行了再包装,使得开发者可以更加便捷地开发Web应用程序。

中间件(middleware)是处理HTTP请求的函数,它的最大特点是一个中间件处理完,再传递给下一个中间件。在Express框架的运行过程中,会调用一系列的中间件,每个中间件都可以对HTTP请求进行加工,并且决定是否调用next方法,将request对象再传递给下一个中间件。

app.use()是Express框架注册中间件的方法,它允许对访问路径进行判断,从而实现路由的功能。如果请求路径匹配,就会执行相应的处理函数,如果不匹配,则交给下一个中间件处理。如果所有的中间件都不能处理该请求,就会返回404错误。

除了app.use()方法之外,Express框架还提供了其他常用的方法,比如app.get()、app.post()等等,它们可以根据HTTP请求的方法(GET、POST等)来注册相应的处理函数。同时,Express框架还支持模板引擎,可以简化前后端开发的工作。

1. 安装Express

在命令行中进入“myapp”文件夹,并运行以下命令安装Express:

npm install express

2. 使用Express

在“index.js”文件中添加以下代码,以使用Express来处理HTTP请求和响应:

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

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

以上代码将创建一个名为“app”的Express应用程序,并定义一个基本路由来响应HTTP GET请求。

3. 添加更多路由

可以根据需要添加更多路由,例如:

app.post('/users', (req, res) => {
  res.send('User created!');
});

app.put('/users/:id', (req, res) => {
  res.send(`User ${req.params.id} updated!`);
});

app.delete('/users/:id', (req, res) => {
  res.send(`User ${req.params.id} deleted!`);
});

以上代码分别定义了三个路由,用于创建、更新和删除用户。每个路由使用HTTP动词和URL路径来唯一标识操作,并使用回调函数来处理请求和响应。

4. 使用中间件

使用Express,你可以轻松地添加各种中间件来扩展应用程序的功能和性能。以下是一个常见的日志记录中间件示例:

app.use((req, res, next) => {
  console.log(`${req.method} ${req.url} - ${new Date().toISOString()}`);
  next();
});

以上代码将记录每个HTTP请求的方法、URL和时间戳,并将其打印到控制台。

5. 错误处理

使用Express,你可以使用错误处理中间件来捕获和处理应用程序中发生的错误。以下是一个简单的错误处理中间件示例:

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

以上代码将捕获所有未处理的错误,并在控制台上打印堆栈跟踪信息。它还将向客户端发送500状态码和错误信息。

四、实例演示

以下是一个使用Express的简单实例:创建一个名为“books”的RESTful API,用于管理书籍的信息。使用MongoDB作为后端数据库,并使用Mongoose来管理数据模型和持久化数据。然后,在Web应用程序中添加几个路由来创建、读取、更新和删除书籍。

1. 安装相关

在命令行中进入“myapp”文件夹,并运行以下命令安装所需的:

npm install express mongoose body-parser

以上命令将安装Express、Mongoose和body-parser中间件。

2. 创建数据模型

在“index.js”文件中添加以下代码:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const bookSchema = new Schema({
  title: String,
  author: String,
  publishedDate: Date
});

const Book = mongoose.model('Book', bookSchema);

以上代码将创建一个名为“Book”的数据模型,包含书籍的标题、作者和出版日期属性。

3. 添加路由

在“index.js”文件中添加以下代码:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;

mongoose.connect('mongodb://localhost/myapp');

app.use(bodyParser.json());

app.post('/books', (req, res) => {
  const book = new Book(req.body);
  book.save((err, book) => {
    if (err) return res.status(500).send(err);
    return res.status(200).send(book);
  });
});

app.get('/books', (req, res) => {
  Book.find({}, (err, books) => {
    if (err) return res.status(500).send(err);
    return res.status(200).send(books);
  });
});

app.put('/books/:id', (req, res) => {
  Book.findByIdAndUpdate(req.params.id, req.body, { new: true }, (err, book) => {
    if (err) return res.status(500).send(err);
    return res.status(200).send(book);
  });
});

app.delete('/books/:id', (req, res) => {
  Book.findByIdAndRemove(req.params.id, (err, book) => {
    if (err) return res.status(500).send(err);
    const response = {
      message: "Book successfully deleted",
      id: book._id
    };
    return res.status(200).send(response);
  });
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

以上代码定义了四个路由,分别用于创建、读取、更新和删除书籍。每个路由都使用Mongoose中的相关方法来执行相应的操作。其中,POST和PUT路由使用body-parser中间件来解析请求体中的JSON数据。

4. 测试应用程序

使用Postman或其他HTTP客户端工具,发送请求来测试Web应用程序。例如,可以发送一个POST请求来创建一本新书:

POST http://localhost:3000/books
{
  "title": "The Hitchhiker's Guide to the Galaxy",
  "author": "Douglas Adams",
  "publishedDate": "1979-10-12"
}

如果一切正常,你将收到一个包含新书信息的响应。

以上就是一个简单的使用Express和Mongoose的实例演示。你可以根据需要进行修改和扩展。

五、结论

在本篇教程中,我们介绍了学习Node.js之前需要了解的Node生态系统关于Express的基本用法和实例演示。希望这篇教程能够帮助你更好地理解Express,并在你的项目中得到应用。如果你想深入学习Node.js和相关技术,请继续阅读其他相关文章和文档。