我已经阅读了快速文档,因为我了解到 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;
答案 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()对象重量轻