2016-05-25 77 views
0

我已經在幾個教程中看到過這種格式,但是對於node.js和我讓他們教會我的課程寫路線爲:node.js express - 處理路由爲app.get('route',folder.file)

app.get('/example', routes.example); 

有那麼一個文件夾「路線」與「example.js」

可以在裏面一個文件:

app.get('/example', function(request, response){}); 

相反,我用它喜歡看到很多有人可能會給我一點這樣的解釋處理路線,爲什麼它更好,在實施方面使用它有什麼不同?

謝謝!

回答

2

主要區別在於定義了路線的邏輯。這兩種選擇中的後者通常會被鼓勵,因爲它解除了路由的責任,並使代碼更清晰易讀。

app.get('/example', function(req, res) {});

在上述路由定義,該路線的邏輯被請求時針對/example由被調用函數中定義。當你在單個文件中定義了許多這樣的路由時,很難跟蹤和閱讀。

app.get('/example', routes.example);

此路線定義在它的功能如何或多或少相同於前一個。主要優點是,當您在單個文件中有許多路由定義時,它的可讀性更高。

至於./routes目錄中有多個路由文件,這是因爲Router Middleware。這樣做的主要好處是,路由可以在單獨的文件中定義,然後作爲中間件注入到主應用程序中。

我建議使用express-generator來創建一個新的快速應用程序,並通過應用程序及其目錄的結構。這或多或少是Express應用程序應該如何佈局的鼓勵結構。它還將說明如何正確使用路由器中間件,您將很好地感受到路由如何被注入到主Express應用中。

+0

優秀的解釋!我不知道路由器中間件。我會閱讀你寄給我的鏈接。非常感謝你 ! –

1

兩者之間唯一的區別是強制關注的分離。

一些開發人員喜歡將與特定路由相關的所有代碼保存在單獨的控制器文件中,並將其引用到路由器文件中。

它使您能夠快速輕鬆地指出錯誤的來源,並且還允許其他開發人員全面瞭解您的項目。

例如:如果我有路線/foo我可以創建一個fooController來處理該路線所需的所有操作。

1

在第二種方式中,路由器中間件按照慣例加載在路由路徑中定義的所有控制器。使用約定而不是配置,代碼會更乾淨,更簡潔,但在功能,性能或其他方面,我認爲沒有區別。