首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >express.Router() vs express()

express.Router() vs express()
EN

Stack Overflow用户
提问于 2019-02-15 11:08:25
回答 1查看 2.6K关注 0票数 8

正如在express 路由指南这个答案中提到的,我们可以创建“迷你应用程序”,并从主应用程序中创建use。但是,我看到了一个代码,它在模块中使用app而不是router

app.js

代码语言:javascript
复制
var express = require('express');
var userRoutes = require('./routes/user');

var app = express();

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

module.exports = app;

routes/user.js

代码语言:javascript
复制
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中正确的用法应该是

代码语言:javascript
复制
router = express.Router()

而不是

代码语言:javascript
复制
app = express()

但是app = express()也能工作!有什么不同,为什么router = express.Router()更好?

EN

回答 1

Stack Overflow用户

发布于 2019-02-15 16:30:02

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

app返回一个app对象时,router将返回一个小的应用片段,类似于app,您将在主程序的后面使用逻辑调用它们。

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

https://expressjs.com/en/api.html#router

路由器对象是中间件和路由的独立实例。您可以认为它是一个“迷你应用程序”,只能执行中间件和路由功能。每个Express应用程序都有内置的应用程序路由器。 路由器的行为类似于中间件本身,因此可以将其用作app.use()的参数或另一个路由器的use()方法的参数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54708015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档