express.Router()vs express()in express

时间:2019-02-15 11:08:25

标签: node.js express

正如快递routing guidethis answer所述,我们可以从主应用程序中创建“迷你应用程序”并use。但是,我在模块中看到了使用app而不是router的代码

app.js

var express = require('express');
var userRoutes = require('./routes/user');

var app = express();

app.use('/user', userRoutes);

module.exports = app;

routes / user.js

var express = require('express');
var app = express(); // not express.Router() !!

app.get('/:name', function(req, res) {
  var userName = req.params.name;
  res.render('user.jade', {
    userName: userName
  });
});

module.exports = app;

我假设routes/user.js中的正确用法应该是

router = express.Router()

代替

app = express()

但是app = express()也可以!有什么区别以及为什么router = express.Router()更好?

1 个答案:

答案 0 :(得分:1)

当您使用路由很多的服务器时,将它们一起放在Main文件中可能会造成混淆。 let router = express.Router()选项的工作方式不同于let app = express()

虽然app返回一个应用程序对象,但router将返回一个小的应用程序片段,类似于app,在这里您将使用逻辑稍后在Main上调用它们。 / p>

最重要的是关于您的问题的一个router,它是独立的,不会干扰应用程序中的其他人环境。

  

路由器对象是中间件和路由的隔离实例。您可以将其视为“微型应用程序”,仅能够执行中间件和路由功能。每个Express应用程序都有一个内置的应用路由器。

     

路由器的行为类似于中间件本身,因此您可以将其用作app.use()的参数,或用作其他路由器的use()方法的参数。