簡體   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