Express:接收路由器实例vs在路由文件上创建一个

时间:2017-06-11 05:54:41

标签: node.js express

我正在抓住Express的基础,我想知道是否存在差异或标准选择以及在处理路线时选择其中一种方法的客观原因:

import { Router } from 'express';

const router = new Router();

router.get('/', (req, res) => res.send('hello world'));

export default router;

VS

export default function(router) {
    router.get('/', (req, res) => res.send('hello world'));
}

我从mern.io堆栈中获取的第一种方法,以及krakenjs示例中的第二种方法。

乍一看(并且具有OOP背景)看起来第二种方法是为依赖注入而设计的;但既然我们在讨论javascript,我不确定第一个是不是。此外,我不确定如何进行测试,因此可能两种情况都是可测试的。

有关哪种方法被视为标准方式的任何见解以及为什么会受到赞赏。

1 个答案:

答案 0 :(得分:0)

假设您有许多不同命名空间的路由器,例如在项目的Router目录中,因此此目录名称中的每个文件(如userRoutersprofileRouters)都取决于命名空间和内容会是这样的:

var theNamespace='user';
export default function(router) {
  router.get(theNamespace+'/login', (req, res) => res.send('hello world'));

}

那么你不需要在服务器文件中没有命名空间的情况下将所有路由器写入一个文件中,只需要Router目录中的每个文件,如下所示:

// read Router directory files here synchronously
for(var file in routerFiles){
  require('./Routers/'+file)(router)
}

这不是一个很大的好处,但是在大型项目中,路由处理程序会增加,这将有所帮助