最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

express.Router()vs express()在express中

IT培训 admin 1浏览 0评论

express.Router()vs express()在express中

如明确的routing guide和this 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;

路线/ 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()更好?

回答如下:

当您使用具有许多路由的服务器时,将它们一起保留在主文件中可能会令人困惑。 let router = express.Router()选项与let app = express()的工作方式不同。

app返回一个app对象时,router将返回一个小的app片段,类似于app,你将使用逻辑稍后在Main上调用它们。

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

路由器对象是中间件和路由的孤立实例。您可以将其视为“迷你应用程序”,只能执行中间件和路由功能。每个Express应用程序都有一个内置的应用程序路由器。

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

express.Router()vs express()在express中

如明确的routing guide和this 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;

路线/ 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()更好?

回答如下:

当您使用具有许多路由的服务器时,将它们一起保留在主文件中可能会令人困惑。 let router = express.Router()选项与let app = express()的工作方式不同。

app返回一个app对象时,router将返回一个小的app片段,类似于app,你将使用逻辑稍后在Main上调用它们。

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

路由器对象是中间件和路由的孤立实例。您可以将其视为“迷你应用程序”,只能执行中间件和路由功能。每个Express应用程序都有一个内置的应用程序路由器。

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

发布评论

评论列表 (0)

  1. 暂无评论