【问题标题】:passing the express app to the routes files将 express 应用程序传递给路由文件
【发布时间】:2016-09-11 02:16:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript node.js express directory-structure


    【解决方案1】:

    首先,您的文件结构听起来有点过头了。如果你需要那么多东西来干净地分开,那就去做吧。但是,我有一种预感,你做得过火了。

    无论如何,我通常做的是从每个模块返回中间件。如果需要,您可以为每个中间件提供自己的 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 中间件模块的工作方式一致。这还允许您通过路径命名模块,在主应用程序中调用 app.use()

    【讨论】:

      【解决方案2】:

      你必须 require express 应用程序或通过执行 require 函数传递给路由文件,如下所示:

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

      我认为全局变量不是个好主意。

      【讨论】:

      • 还是谢谢你。如果你们想向我展示任何好的项目结构,我很想看看你们最喜欢的。
      猜你喜欢
      • 2017-09-11
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      相关资源
      最近更新 更多