将快递应用程序传递给路径文件

时间:2016-09-11 02:16:38

标签: javascript node.js express directory-structure

我正在编写一个没有前端代码的快速4 api服务器。我选择构建我的项目,以便文件夹结构基于项目的业务逻辑,而不是基于文件类型(路由,模型等)来完成。

例如,我的User文件夹有我的userRoutes.js,userModel,js,userApi.js,...

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

2 个答案:

答案 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);