我正在编写一个没有前端代码的快速4 api服务器。我选择构建我的项目,以便文件夹结构基于项目的业务逻辑,而不是基于文件类型(路由,模型等)来完成。
例如,我的User文件夹有我的userRoutes.js,userModel,js,userApi.js,...
我的主要问题是我应该如何将应用程序传递到路线文件中?我最喜欢的方法是使用global.app并使其全局化,但我听说这不是最佳实践。如果您对我的业务逻辑结构有任何建议,那也很棒。
答案 0 :(得分:1)
你必须要求快递应用程序或通过excute require函数传递给路径文件:
var app = require('express');
var userRoutes= require('your route path')(app);
我认为全局变量并不是一个好主意。
答案 1 :(得分:1)
首先,您的文件结构听起来过于顶级。如果你需要那么多东西来干净利落地分开,那就去吧。但是,我有一种预感,你过度了。
无论如何,我通常做的是从每个模块返回中间件。如果需要,您可以为每个中间件提供自己的Express路由器。在模块中:
{'car':'ferrari','color':'red','qty':1}
然后在您的主要申请中:
const express = require('express');
module.exports = function (config) {
const router = new express.Router();
router.get('/something', (req, res) => {
// Code here
});
return router;
}
这与所有其他Express中间件模块的工作方式一致。这也允许您通过路径命名模块,并在主应用程序中调用const somethingHandler = require('somethingHandler.js');
app.use(somethingHandler);
。