Express.js 如何做到控制器与路由分离?

在使用 Express.js 构建 Web 应用程序时,我们通常需要将路由和控制器分离。这样做的好处是可以使代码更加清晰、易于维护和重用。本文将介绍如何在 Express.js 中实现控制器与路由分离。

什么是控制器和路由?

在 Express.js 中,控制器是处理请求的函数。它们通常包含业务逻辑、数据访问和视图渲染等操作。路由是将 URL 映射到控制器的过程。它们通常由 HTTP 方法、URL 和控制器组成。

为什么要分离控制器和路由?

将控制器和路由分离的主要好处是代码的可维护性和可重用性。当控制器和路由混杂在一起时,代码往往会变得难以理解和维护。此外,分离控制器和路由还可以让我们更容易地重用控制器,因为它们可以在不同的路由中使用。

如何实现控制器和路由的分离?

在 Express.js 中,控制器和路由的分离可以通过以下步骤实现:

  1. 创建一个控制器文件,例如 controllers/userController.js
--------------- - ------------- ---- -
  -- ---------
--

------------------ - ------------- ---- -
  -- ---------
--
  1. 在控制器文件中定义控制器函数,例如 getUsercreateUser

  2. 创建一个路由文件,例如 routes/userRoutes.js

----- ------- - -------------------
----- ------ - -----------------
----- -------------- - -----------------------------------------

--------------- ------------------------
---------------- ---------------------------

-------------- - -------
  1. 在路由文件中引入控制器文件,并将控制器函数与路由进行映射。

  2. 在主应用程序中引入路由文件并将其挂载到正确的路径上。

----- ------- - -------------------
----- --- - ----------
----- ---------- - -------------------------------

----------------- ------------

---------------- -- -- -
  ---------------- --------- -- ---- --------
---
  1. 在主应用程序中使用 app.use 方法将路由挂载到正确的路径上。

结论

将控制器和路由分离是一种良好的编程实践,可以使代码更加清晰、易于维护和重用。在 Express.js 中,我们可以通过创建控制器文件和路由文件,将控制器和路由分离。这种做法可以使我们的代码更加清晰、易于维护和重用。

示例代码

以下是一个完整的示例代码,演示了如何在 Express.js 中实现控制器和路由的分离。

controllers/userController.js

--------------- - ------------- ---- -
  ------------- - -------
--

------------------ - ------------- ---- -
  ---------------- - -------
--

routes/userRoutes.js

----- ------- - -------------------
----- ------ - -----------------
----- -------------- - -----------------------------------------

--------------- ------------------------
---------------- ---------------------------

-------------- - -------

app.js

----- ------- - -------------------
----- --- - ----------
----- ---------- - -------------------------------

----------------- ------------

---------------- -- -- -
  ---------------- --------- -- ---- --------
---

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/673d6dddde2dedaeef3a0e00