Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript express.Router()和multiple express()对象之间的区别?_Javascript_Node.js_Express - Fatal编程技术网

Javascript express.Router()和multiple express()对象之间的区别?

Javascript express.Router()和multiple express()对象之间的区别?,javascript,node.js,express,Javascript,Node.js,Express,我知道,使用新的express 4路由器,我们可以将多个路由路径组织到不同的文件中,如下所示: // In cars.js const router = express.Router(); router.get('/brands', function(req, res) { ... }); router.get('/models', function(req, res) { ... }); module.exports = router; // In animals.js const

我知道,使用新的express 4路由器,我们可以将多个路由路径组织到不同的文件中,如下所示:

// In cars.js
 const router = express.Router();
 router.get('/brands', function(req, res) { ... });
 router.get('/models', function(req, res) { ... });
 module.exports = router;

// In animals.js
const routerTwo = express.Router();
routerTwo.get('/domestic', function(req, res) { ... });
routerTwo.get('/wild', function(req, res) { ... });
module.exports = routerTwo;

// In main.js
app.use('/cars', router);  // matches `/cars/brands`, `/cars/models`.
app.use('/animals', routerTwo); // matches `animals/domestic`, `animals/wild`.
现在我想知道,如果我在
cars.js
anivers.js
文件中用简单的
express()
来更改
express.Router()
,它会起作用,因为这两个文件都是我们称之为mini-app的express()的新实例。那么新的
express.Router()
object有什么用呢


express.Router()
对象中公开的方法,以及它们的功能,不是可以通过多个
express()
实例(如模块化路由器处理程序等)实现吗?

简单来说,路由器是express应用程序的轻量级版本,或者是一个迷你express应用程序

global express对象提供了更多的资源来支持视图和各种设置,而路由器基本上提供了路由API,如
、use
、get
、param
route
。路由器对象表示中间件和路由的独立实例,并且只能执行中间件和路由功能,这使得它非常适合高效地模块化路由处理

现在我想知道,如果我在cars.js和animates.js文件中使用简单的
express()
来更改
express.Router()
,它会起作用,因为这两个文件都是我们称之为mini-app的express()的新实例。那么新的
express.Router()
object有什么用呢

好的,您应该仍然能够使用
express()
而不是
express.Router()
进行单独的路由,但是这样做也会带来很多额外的代码,您可能不会使用这些代码,因此这是不必要的开销

这就是为什么创建了
express.Router()


相关:

我认为不必要的开销是无效的,因为无论调用多少次
require('express')
(从nodejs文档缓存)在同一个项目中。缓存使应用程序的创建只发生一次,因此所有进一步的要求都会更快,但这并不会改变缓存的应用程序仍然包含大量额外代码的事实,而这些代码可能不需要仅用于路由。