2017-06-11 29 views
0

我正在掌握Express的基礎,我想知道在處理時選擇其中一種方法的客觀原因是否存在差異或標準選擇路線:Express:接收路由器實例vs創建一個路由文件

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,我不確定第一個不是。另外我不確定測試是如何完成的,所以也許兩種情況都是可測試的。

有關哪種方法被認爲是標準方式的任何見解以及爲什麼會被讚賞。

回答

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) 
} 

它不是一個很大的好處,但在擊潰處理程序得到提高將更有利於大項目

+0

我仍然有種困惑,我無法把握做這種方式的好處。對我的(基本的,入門級的)知識,你可以通過調用'app.use('/ users',require('./ users/route')'並且不傳遞路由器作爲參數來獲得相同的結果。看到好處,因爲可測試性似乎不是關鍵的問題。您能提供一個更加密集的例子,以便我能理解這個好處嗎?請提前致謝! –

+0

我更新我的答案 – farhadamjady