[英]node.js express - handling routes as app.get('route', folder.file)
我已經在一些教程中看到了這種格式,但是這對node.js還是陌生的,在我讓他們教給我的課程中,我將路線寫為:
app.get('/example', function(request, response){});
相反,我看到許多人像這樣使用它:
app.get('/example', routes.example);
然后在“ example.js”中有一個文件夾“ routes”和一個文件
有人可以給我一些解釋這種處理路由的方法嗎,為什么會更好,在實現上使用它有什么區別呢?
謝謝 !
主要區別在於定義路由邏輯的位置。 通常鼓勵選擇這兩種方法中的后一種方法,因為它使路線的責任分離,並使代碼更清晰易讀。
app.get('/example', function(req, res) {});
在上述路由定義中,該路由的邏輯是在針對/example
發出請求時調用的函數中定義的。 當在單個文件中定義了許多這樣的路由時,將很難遵循和閱讀。
app.get('/example', routes.example);
該路由定義在功能上與上一個相同。 主要優點是,當您在一個文件中有多個路由定義時,它的可讀性更高。
至於其中包含多個路由文件的./routes
目錄,這是因為Router Middleware 。 這樣做的主要好處是,可以在單獨的文件中定義路由,然后將其作為中間件注入到主應用程序中。
我建議使用express-generator
創建一個新的Express應用程序,並仔細研究該應用程序及其目錄的結構。 這或多或少是鼓勵Express應用程序布局的結構。 它還將說明如何正確使用路由器中間件,並使您很好地了解如何將路由注入主Express應用程序。
兩者之間的唯一區別是強制分離關注點。
一些開發人員喜歡將與特定路由相關的所有代碼保存在單獨的控制器文件中,而僅在路由器文件中引用它。
它使您可以快速,輕松地找出錯誤的來源,還可以讓其他開發人員對您的項目進行廣泛的概述。
示例:如果我有一條路由/foo
我可以創建一個fooController
來處理該路由所需的所有操作。
第二種方式是,路由器中間件按照約定加載路由路徑中定義的所有控制器。 使用約定優於配置,代碼將更簡潔,更省時,但就功能,性能或其他方面而言,我認為沒有區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.