Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构

如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构

原创
作者头像
炑焽
发布于 2025-01-05 11:27:09
发布于 2025-01-05 11:27:09
3800
举报

前言

将从如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构。接着,文章将详细讲解 Express 中间件的概念、分类以及如何有效地使用中间件来增强应用的功能和性能。最后,我们将讨论如何制定合理的接口规范,以确保 API 的一致性和可维护性。

一、下载express模版

  1. 根据创建的自定义bincli命令下载express模版代码
代码语言:bash
AI代码解释
复制
bincli create express-project
image.png
image.png
  1. 切换 express-project 项目,打开终端命令
代码语言:bash
AI代码解释
复制
cd express-project
npm install
  1. 查看package.json是否安装了 nodemon,没有的话重安一下
代码语言:bash
AI代码解释
复制
npm i nodemon
  1. 运行项目
代码语言:bash
AI代码解释
复制
npm run dev

报错原因:运行 Express 应用时遇到了一个 ReferenceError,具体来说是因为在 app.js 文件中使用了一个未定义的变量 router。

image.png
image.png

二、Express 中间件与接口规范

1、启动项目

  • 修改app.js
代码语言:js
AI代码解释
复制
const express = require("express");
const app = express();

const PORT = process.env.PORT || 3000;

function logs(req) {
  console.log(`${req.method},${req.url},${Date.now()}`);
}

app.get("/", (req, res) => {
  logs(req);
  res.send("/home");
});
app.get("/register", (req, res) => {
  logs(req);
  res.send("register");
});
app.get("/login", (req, res) => {
  logs(req);
  res.send("/login");
});
app.listen(PORT, () => {
  console.log(`Server is running at http://localhost:${PORT}`);
});
  • 运行项目
代码语言:bash
AI代码解释
复制
npm run dev
image.png
image.png
  • 打开postman客服端,send发送请求查看
image.png
image.png

2、注册中间件函数。

app.use()是 Express 应用的一个方法,这里注册的中间件将应用于所有路由。其中(req, res, next) => { ... } 是一个箭头函数,它接受三个参数。

  • req:请求对象,包含了请求的所有信息,如请求方法、URL、请求头和请求体等。
  • res:响应对象,用于发送响应给客户端。
  • next:一个函数,调用它将请求传递给下一个中间件函数。如果不调用 next(),请求将停止处理。

修改app.js

代码语言:js
AI代码解释
复制
const express = require("express");
const app = express();

const PORT = process.env.PORT || 3000;
app.use((req, res, next) => {
  console.log(`${req.method},${req.url},${Date.now()}`);
  next();
});

app.get("/", (req, res) => {
  res.send("/home");
});
app.get("/register", (req, res) => {
  res.send("register");
});
app.get("/login", (req, res) => {
  res.send("/login");
});
app.listen(PORT, () => {
  console.log(`Server is running at http://localhost:${PORT}`);
});

注意:在 Express 应用中,中间件的执行顺序非常重要,因为它决定了请求处理的流程。app.use() 方法用于注册中间件函数,这些函数会按照它们被注册的顺序依次执行。如果中间件没有正确放置,可能会导致请求不经过预期的中间件处理,从而影响应用的行为。

三、Express 中间件分类

1、应用程序级别中间件

应用程序级别中间件是绑定到 Express 应用实例的中间件。它对所有路由和请求都有效。

使用场景:适用于全局的请求处理,如日志记录、身份验证等。

代码语言:js
AI代码解释
复制
app.use(function (req, res, next) {
  // 执行中间件逻辑
  next();
});

2、路由级别中间件

路由级别中间件是绑定到特定路由的中间件。它只对特定路由的请求有效。

使用场景:适用于特定路由的请求处理,如特定路径的权限检查、数据预处理

  • 修改app.js
代码语言:js
AI代码解释
复制
app.get(
  "/",
  function (req, res, next) {
    console.log(req.method);
    next();
  },
  function (req, res, next) {
    console.log("route");
    next();
  }
);
  • 启动项目
代码语言:bash
AI代码解释
复制
npm run dev
image.png
image.png
  • 打开 postman 客户端,发送请求
image.png
image.png
image.png
image.png

3、错误处理中间件

错误处理中间件用于捕获和处理在中间件链中发生的错误。

使用场景:通常放在所有其他中间件之后,以便捕获所有未处理的错误。

代码语言:js
AI代码解释
复制
app.use(function (err, req, res, next) {
  // 处理错误
  console.error(err.stack);
  res.status(500).send("服务器内部错误");
});

4、内置中间件

Express API 参考手册

Express 内置了一些中间件函数,用于处理常见的任务。

express.static:用于提供静态文件服务。

express.json():用于解析 JSON 格式的请求体。

express.urlencoded():用于解析 URL 编码格式的请求体。

  1. express.Router() 用于创建模块化的路由处理器
  • 修改 router/index.js
代码语言:js
AI代码解释
复制
const express = require("express");
const router = express.Router();
router.get("/", (req, res, next) => {
  console.log(req.method);
  res.send("/home");
});

router.get("/user", (req, res, next) => {
  console.log(req.method);
  res.send("/users");
});
module.exports = router;
  • 修改app.js
代码语言:js
AI代码解释
复制
const express = require("express");
const router = require("./router/index.js");
const app = express();
app.use(router);

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running at http://localhost:${PORT}`);
});
  • 运行项目
代码语言:bash
AI代码解释
复制
npm run dev
  • 打开客户端 postman
image.png
image.png
  1. 添加路由的路径前缀。
  • app.js
代码语言:js
AI代码解释
复制
const express = require("express");
const router = require("./router/index.js");
const app = express();
// 任何以 'node' 开头的请求路径都会被这个路由处理器处理。
app.use("node", router);

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running at http://localhost:${PORT}`);
});
  • 运行项目
代码语言:bash
AI代码解释
复制
npm run dev
  • 打开客户端 postman

未添加node前缀显示请求错误

image.png
image.png

添加node前缀后

image.png
image.png
  1. 404 错误处理中间件,当请求的路径没有匹配到任何定义的路由时,这个中间件会被调用,通常放在所有路由定义之后,确保它是最后一个中间件。
代码语言:js
AI代码解释
复制
app.use((req, res, next) => {
  res.status(404).send("404 Not Found");
});
  1. 500 错误处理中间件,用于捕获和处理在应用中发生的错误,在所有其他中间件之后。
代码语言:js
AI代码解释
复制
app.use((err, req, res, next) => {
  console.log(err);
  res.status(500).send("Service Error");
});

5、第三方中间件

第三方中间件是由社区开发的中间件,提供了各种功能扩展。

代码语言:js
AI代码解释
复制
const cors = require("cors");
const morgan = require("morgan");
app.use(cors());
app.use(morgan("combined"));

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​如何处理Express和Node.js应用程序中的错误
使用Express创建API时,我们定义了路由及其处理程序。在理想情况下,API的使用者只会向我们定义的路由发出请求,并且路由将正常运行。但是,我们不会生活在理想的世界中:)。Express知道这一点,并使我们API中的错误处理变得轻而易举。
前端知否
2020/03/23
6.2K0
08_Express框架
使用Node.js进行服务器开发,开发效率比较低,例如在实现路由功能和静态源访问功能时,代码写起来很烦琐 为了提高Node.js服务器的开发效率,人们开发了Express框架,它可以帮助开发人员快速创建网站应用程序。
张哥编程
2024/12/13
3170
08_Express框架
前端Express框架必学之:Node.js项目搭建与接口开发实战
Express是一个基于Node.js平台的轻量级Web应用框架,它提供了简洁的API和丰富的功能,使得开发者能够快速地构建Web服务器和API。本文将带领大家从零开始,使用Express框架搭建一个简单的Web应用。
肥晨
2024/04/24
2.6K0
前端Express框架必学之:Node.js项目搭建与接口开发实战
🥬🐕 node的第一个接口:注册
mongodb安装如果是Mac的请看 这篇文章 操作mongodb的插件有很多,这里我们使用mongoose 安装插件
用户4793865
2023/01/12
1.3K0
2024 版:Node.js+Express+Koa2+Nest.js 开发服务端(高の青)
在现代的 web 开发中,Node.js 是一种非常流行的服务器端 JavaScript 环境。我们来编写一个大致的框架和一些关键代码片段,以帮助你了解如何使用 Node.js、Express、Koa2 和 Nest.js 开发服务端应用。
百课优用户
2024/07/29
4720
Nodejs之express框架的基本使用
此文是个人学习归纳的记录,腾讯云首发,未经允许,严禁转载,如有不对, 还望斧正, 感谢!
言志志
2024/04/30
3210
Node.js学习笔记——Express、路由、中间件、接口跨域解决方案详解(附实例)
Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架 通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的。 本质就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法 中文官网 http://www.expressjs.com.cn/
timerring
2022/07/20
4.1K0
Node.js学习笔记——Express、路由、中间件、接口跨域解决方案详解(附实例)
【Nodejs】Express实现接口
node-http模块 ==⇒ express框架 ==⇒ koa =⇒ egg.js
且陶陶
2023/05/09
1.7K0
【Nodejs】Express实现接口
关于Express的一些路由与响应方法
炑焽
2025/01/07
2700
Express 使用详情
Express 是一款基于 Node.js 的 Web 开发框架,它提供了简洁的 API,使得 Web 应用开发变得更加高效和方便。本文将详细介绍 Express 的使用方法,包括安装、基本概念、路由、中间件、模板引擎等,并给出相应的代码示例。
世间万物皆对象
2024/03/20
3520
Express使用手记:核心入门
Express是基于nodejs的web开发框架。优点是易上手、高性能、扩展性强。
IMWeb前端团队
2019/12/05
1.1K0
Node.js 路由的原理、使用方式以及一些常见的应用场景
在 Web 开发中,路由(Routing)是指根据不同的请求路径和请求方法,将请求分发到相应的处理函数或中间件。Node.js 作为一种后端开发环境,也提供了强大的路由功能。本文将详细介绍 Node.js 路由的原理、使用方式以及一些常见的应用场景。
网络技术联盟站
2023/07/07
9230
Express框架
Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用。我们可以使用 npm install express 命令进行下载。
星辰_大海
2020/11/10
2K0
Express框架
Express新手入坑笔记之动态渲染HTML
这里的public不会显示在url中, 为了方便判别静态文件的url请求, 我们在public内新建一个static文件夹, 这样所有请求静态文件的url,都会以static开头(这里借鉴了django处理静态文件的方法)
zhaoolee
2018/12/26
3.9K0
Express中间件,看这篇文章就够了(#^.^#)
okaychen
2018/01/05
2.2K0
Express中间件,看这篇文章就够了(#^.^#)
NodeJS背后的人:Express
前置知识:需要掌握了解: JavaScript基础语法 、Node.JS环境API 、前端工程\模块化 ·····
Java_慈祥
2024/08/06
5610
NodeJS背后的人:Express
Express(一) ——简单入门
背景:参加的青训营项目,使用 Express 来实现后端,个人被分配到后端去。于是,简单速通了下 Express。项目结束,回头写下笔记,沉淀一下。
赤蓝紫
2023/01/02
3.7K0
Express(一) ——简单入门
自定义mock数据,实现restful风格api
介绍两种方式做mock的server: - Express for mock - json-server
江米小枣
2020/06/15
1.6K0
如何在Node.js和Express中上传文件
大量的移动应用程序和网站允许用户上传个人资料图片和其他文件。 因此,在使用Node.js和Express构建REST API时,通常需要处理文件上传。
ccf19881030
2020/10/26
7K0
如何在Node.js和Express中上传文件
express的中间件app.use()的使用
安装好了express框架后,会在项目目录中看到node_modules依赖文件包,在项目的目录下新建一个routes目录,并在routes目录下新建index.js文件用于将不同方式请求的路由数据导出。
ruochen
2021/11/24
1.5K0
相关推荐
​如何处理Express和Node.js应用程序中的错误
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档