首页 > 解决方案 > 为什么在分隔路由时使用 express.Router()

问题描述

  1. 我已经阅读了 express 文档,因为我了解了 Router() 和 express.Router()。所以我的问题是我已经将我的所有路由与主应用程序分开并在那里创建了不同的文件夹我没有创建任何路由器对象(var router express.Router())来路由到特定路径,它仍然工作正常。所以我想知道为什么这个路由器类是必要的?

    看,这是主应用程序文件,

    '使用严格'; 常量 startUpDebugger=require('debug')('app:startUp'); const dbDebugger=require('debug')('app:db'); 常量表达 = 要求(“表达”);常量应用程序 = 快递();const moragan=require('morgan'); 常量头盔=要求('头盔');常量配置=要求('配置');常量课程=要求('./routes/courses'); const home=require('./routes/home'); app.use(头盔()); app.set('view engine','pug'); app.set('views','./view'); app.use(express.json()); app.use('/api/courses',courses); app.use('/',home);

    控制台.log( Node enironment variable: ${process.env.NODE_ENV}); 控制台.log( Application name : ${config.get('name')}); 控制台.log( mail server : ${config.get('mail.host')});

    if(app.get('env')==='development'){ app.use(moragan('tiny')); startUpDebugger("******摩根启用*******") }

    常量端口 = process.env.PORT || 5000;app.listen(端口);

    控制台.log( Api Node running on port ${port});

    这是我的课程.js 这是我的路线文件

    常量快递=要求(“快递”);常量应用=快递

    常量课程=[{"id":1,"course":"course1"}, {"id":2,"course":"course2"}, {"id":3,"course":"course3" }, {"id":4,"course":"course4"}]

    app.route('/posting').post((req,res)=>{ console.log(req.body); course.push(req.body) res.status(201).send(courses); } ).put((req,res)=>{ res.send("成功放置消息") }) app.get('/sub/:id',(req,res)=>{ res.status(200) .send(req.params); })

    模块.出口=应用程序;

标签: node.js

解决方案


你的问题不清楚,但如果我让你说对了:-

如果您的应用程序非常简单,则不需要路由器。

//you can just invoke express constructor and use it   
const app=express() 
app.get('/', function (req, res) {
  res.send('root')
}) // app.get,app.post and so on  

在您的主应用程序文件中。

但是一旦它开始增长,你就会想把它分成更小的“迷你应用程序”,以便更容易测试和维护,并向它添加东西。您将避免巨大的主应用程序文件:)。
所以在这里你需要为路由创建另一个文件,并且必须调用 express.Router() 类并像这样使用它:

//route.js
const Router=express.Router()

    // middleware that is specific to this router
    router.use(function timeLog (req, res, next) {
      console.log('Time: ', Date.now())
      next()
    })
    // define the home page route
    router.get('/', function (req, res) {
      res.send('Birds home page')
    })
    // define the about route
    router.get('/about', function (req, res) {
      res.send('About birds')
    })  

并将这个文件导入到主app文件中并传递给中间件使用

app.use('/',require('./routes/routes.js'))  

与 express() 对象相比,express.Router() 对象重量轻


推荐阅读