【问题标题】:NodeJS, express - routingNodeJS,快递 - 路由
【发布时间】:2018-12-06 13:33:20
【问题描述】:

我已经用“expressjs”设置了一个小的 NodeJS API。在我的代码中,我有一些类似的代码块,如下所示:

app.get('/api/my/path', (req, res) => {
  doSomethingUseful();
});

所有这些请求都做了不同的事情,所以被调用的函数也总是不同的。

我问自己这是否是在 NodeJS 中编写代码的好习惯。 如果有更好/更清洁的方式来编写所有这些路径,如果您能告诉我如何或至少给我一个地方寻找它,我将不胜感激。

编辑 1:明确一点:我问将大量 'app.get(...)' 写入一个源代码文件是否是个好主意,或者是否有更好的方法?

【问题讨论】:

  • 你到底在问什么?您是在问是否应该使用 Node.js?

标签: node.js express


【解决方案1】:

使用简单的模块,在形成堆之前不要调用路由。

试试Route Magic

您只想编写 2 行代码并让模块读取您的目录和文件结构以处理所有 app.use 路由调用,如下所示:

const magic = require('express-routemagic')
magic.use(app, __dirname, '[your route directory]')

对于那些你想手动处理的,只是不要使用将目录传递给 Magic。

【讨论】:

    【解决方案2】:

    是的,有一种比将所有路由写入一个文件更好的方法。例如,假设您有用户和问题的路线。 对于用户,您需要 get/set/put/delete 用于配置文件,类似地用于问题。因此您创建以下文件夹结构:/api/users/api/questions/api/users

    const express=require('express')
     const router=express.Router()
    
     //this handles route: /users
     router.get('/',(req,res)=>{})
    
     //this handles route: /users/profile
     router.get('/profile',(req,res){})
    
     //this is to retrieve profile of specific user by user id :/users/profile/:userID
     router.get('/profile/:userId',(req,res))
    
    
     router.post('/profile',(req,res))
     .
     .
    

    然后,在您的 index.js 或项目的入口点中,

    const users=require('./api/users')
    const questions=require('./api/questions')
    app=require('express')
    
    app.use('/users',users)
    app.use('/questions',questions)
    

    所以实际上,您说对于任何/users 路由,请参阅 users.js 文件,对于任何/questions 路由,请参阅 questions.js 文件等等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2018-11-07
      • 2017-12-20
      • 1970-01-01
      相关资源
      最近更新 更多