Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将express应用程序传递到路由文件_Javascript_Node.js_Express_Directory Structure - Fatal编程技术网

Javascript 将express应用程序传递到路由文件

Javascript 将express应用程序传递到路由文件,javascript,node.js,express,directory-structure,Javascript,Node.js,Express,Directory Structure,我正在编写一个没有前端代码的Express4API服务器。我选择了项目的结构,使文件夹结构基于项目的业务逻辑,而不是基于文件类型(路由、模型等) 例如,我的用户文件夹中有我的userRoutes.js、userModel、js、userApi.js 我的主要问题是,我应该如何将应用程序传递到我的路由文件中?我最喜欢的方法是制作global.app并使其全球化,但我听说这不是最佳做法。如果您对我的业务逻辑结构有任何建议,那也太好了。您必须要求express app或通过执行要求功能传递到route

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

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


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

您必须要求express app或通过执行要求功能传递到routes文件,如下所示:

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

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

首先,您的文件结构听起来有些过头了。如果你需要这么多来把事情干净利落地分开,那就去做吧。但是,我有预感你做得太过分了

在任何情况下,我通常做的是从每个模块返回中间件。如果需要,您可以为每个中间件提供自己的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()
调用主应用程序,按路径命名模块。

谢谢。如果你们想给我展示任何好的项目结构,我很乐意看看你们最喜欢的。