繁体   English   中英

为什么要在分离路由时使用 express.Router()

[英]Why express.Router() while separating routes

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

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

    '使用严格'; const startUpDebugger=require('debug')('app:startUp'); const dbDebugger=require('debug')('app:db'); const express = require('express'); const app = express(); const moragan=require('摩根'); const 头盔=需要('头盔'); const config=require('config'); const course=require('./routes/courses'); const home=require('./routes/home'); app.use(头盔()); app.set('查看引擎','pug'); app.set('views','./view'); app.use(express.json()); app.use('/api/courses',courses); app.use('/',home);

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

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

    const port = process.env.PORT || 5000; app.listen(端口);

    console.log( Api Node running on port ${port} );

    这是我的courses.js 这是我的路由文件

    const express=require('express'); const app=express

    const course=[{"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); })

    module.exports=app;

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

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

//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() 对象是轻量级的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM