为什么在分隔路线的同时表达express.Router()

时间:2019-01-29 11:18:22

标签: node.js

  1. 我已经阅读了快速文档,因为我了解到 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('morgan'); const helmet = require('helmet'); const config = require('config'); const course = require('./ routes / courses'); const home = require('./ routes / home'); app.use(helmet()); app.set('view engine','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(port);

    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(要求正文);     courses.push(要求身体)     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;

1 个答案:

答案 0 :(得分:0)

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

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

//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.use('/',require('./routes/routes.js'))  

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