将快速应用传递给路由文件

我正在写没有前端代码的快速4 api服务器。 我select构build我的项目,以便文件夹结构基于项目的业务逻辑,而不是基于文件types(路由,模型等)

例如,我的用户文件夹有我的userRoutes.js,userModel,js,userApi.js,…

我的主要问题是,我应该如何将应用程序传递到我的路线文件? 我最喜欢的做法是做global.app并使其成为全球,但我听说这不是最佳做法。 如果您对我的业务逻辑结构有任何build议,那也会很棒。

首先,你的文件结构听起来不错。 如果你需要那么多的东西干净地分解出来,去做吧。 但是,我有一个预感,你正在过度。

无论如何,我通常做的是从每个模块中返回中间件。 如果你愿意,你可以给每个中间件自己的Express路由器。 在模块中:

const express = require('express'); module.exports = function (config) { const router = new express.Router(); router.get('/something', (req, res) => { // Code here }); return router; } 

然后在你的主应用程序中:

 const somethingHandler = require('somethingHandler.js'); app.use(somethingHandler); 

这与所有其他Express中间件模块的工作方式一致。 这也允许你通过path命名空间模块,在你的app.use()调用主应用程序。

你必须要求明确的应用程序或通过路由文件执行需求function,如下所示:

 var app = require('express'); var userRoutes= require('your route path')(app); 

我认为全球变数不是好主意。