5分钟node.js入门之Express
一、前言
如果您是一个前端开发(后端码仔不想看的可以出门右拐😁),那么您可能(绝对)已经听说过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和相关技术,请继续阅读其他相关文章和文档。
转载自:https://juejin.cn/post/7236593298763661372