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

约彩365app官网下载安装 📅 2025-09-21 19:34:27 ✍️ admin 👁️ 6225 ❤️ 81
如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构

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

一、下载express模版根据创建的自定义bincli命令下载express模版代码代码语言:bash复制bincli create express-projectimage.png切换 express-project 项目,打开终端命令代码语言:bash复制cd express-project

npm install查看package.json是否安装了 nodemon,没有的话重安一下代码语言:bash复制npm i nodemon运行项目代码语言:bash复制npm run dev报错原因:运行 Express 应用时遇到了一个 ReferenceError,具体来说是因为在 app.js 文件中使用了一个未定义的变量 router。

image.png二、Express 中间件与接口规范1、启动项目修改app.js代码语言:js复制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复制npm run devimage.png打开postman客服端,send发送请求查看image.png2、注册中间件函数。app.use()是 Express 应用的一个方法,这里注册的中间件将应用于所有路由。其中(req, res, next) => { ... } 是一个箭头函数,它接受三个参数。

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

代码语言:js复制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复制app.use(function (req, res, next) {

// 执行中间件逻辑

next();

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

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

修改app.js代码语言:js复制app.get(

"/",

function (req, res, next) {

console.log(req.method);

next();

},

function (req, res, next) {

console.log("route");

next();

}

);启动项目代码语言:bash复制npm run devimage.png打开 postman 客户端,发送请求image.pngimage.png3、错误处理中间件错误处理中间件用于捕获和处理在中间件链中发生的错误。

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

代码语言:js复制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 编码格式的请求体。

express.Router() 用于创建模块化的路由处理器修改 router/index.js代码语言:js复制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复制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复制npm run dev打开客户端 postmanimage.png添加路由的路径前缀。app.js代码语言:js复制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复制npm run dev打开客户端 postman未添加node前缀显示请求错误

image.png添加node前缀后

image.png404 错误处理中间件,当请求的路径没有匹配到任何定义的路由时,这个中间件会被调用,通常放在所有路由定义之后,确保它是最后一个中间件。代码语言:js复制app.use((req, res, next) => {

res.status(404).send("404 Not Found");

});500 错误处理中间件,用于捕获和处理在应用中发生的错误,在所有其他中间件之后。代码语言:js复制app.use((err, req, res, next) => {

console.log(err);

res.status(500).send("Service Error");

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

代码语言:js复制const cors = require("cors");

const morgan = require("morgan");

app.use(cors());

app.use(morgan("combined"));

相关创意

如何理解网络带宽?它通常指的是什么?
directx功能怎么开启 5个简易指南告诉你
成年鸭分公母的最佳方法
SketchUp教程 | 如何在SketchUp中实现更好的阴影效果
极乐净土为何火爆?
如何轻松搞定华为云数据恢复?超全攻略来袭!
《旅行青蛙》:这款在日本不火的游戏,能在中国火多久?
初听钰龙Aurora欧若拉蓝牙解码耳放一体机
电信宽带100M速度怎么样?