當前位置:
首頁 > 最新 > 使用路由分離來把相關的路由拆分到各個模塊中

使用路由分離來把相關的路由拆分到各個模塊中

Express的文檔和流行的教程通常都是把所有的代碼組織在同一個文件中。在實際的項目中,這樣最終會變得難以管理。使用Node的模塊系統把相關的路由分離成多個文件,還包括如何在不同文件中獲取Express app對象的多種方式。主要的Express應用文件將變得很大,需要更好的方式來組織所有的這些路由。使用路由分離來把相關的路由拆分到各個模塊中去。

Express是一個簡約的框架,它不會手把手地幫助你來組織項目。如果不注意,一開始很簡單的項目可以變得很笨拙。成功組織好更大的項目的秘密是擁抱Node的模塊系統。

首當其衝,要處理的便是路由,但是你可以將這個技術應用於Express開發的方方面面。甚至可以把應用當成是一個獨立的Node模塊,然後在其他應用將其載入進來。

完整的示例項目可以在listings/web/route_separation/app_monolithic.js找到。它包括用於創建、查找和更新筆記的一組CRUD路由。類似這樣的應用也會有其他的CRUD路由:也許筆記會以筆記本的形式組織起來,而且肯定有用戶賬戶管理功能和類似設置提醒的額外功能。一旦你有了四或五組路由,這個應用文件可能就是幾百行代碼了。

如果你在一個單獨很大的文件中編寫這個項目,那麼這將是很多問題的根源。因為很容易無意中使用了全局而非局部的變數導致錯誤,在一定條件下很危險的邊緣影響也有可能遇到。Node有一個內置的解決方案,可以應用於Express或者其他的web框架:目錄即模塊。

使用模塊來重構路由,首先創建一個名為routes的目錄,或者更傾向controllers也可以。然後創建一個index.js文件。在例子中,它是一個只有三行簡單代碼的文件,來把處理筆記的路由輸出給外部。

module.exports = {

notes: require("./notes")

};

在這裡,我們只有一個路由模塊,使用require和相對路徑來進行載入。接著,複製整個路由組的內容粘貼到routes/notes.js文件里。然後刪除路由定義的部分——例如,app.get("/notes",,替換成module.exports.index=function(req,res){來輸出給外部。

每一個路由方法對外以一個CRUD風格的名稱輸出(index,create,update,show)。相應的app.js文件現在可以清理一下。下邊的代碼展示了處理後有多麼簡潔

所有路由會在require("./routes")時立刻載入。這樣簡單方便,因為會減少require語句,否則app.js會變得凌亂。你所需要做的便是移除舊的路由callback,把每一個路由的方法引用添加進去。不要在這個文件里放一個app.listen的方法,而是對外暴露app。這樣會讓測試應用更加容易。對外暴露app對象另外一個優點是你可以在應用的其他任意地方載入app.js模塊。Express允許你獲取和設置配置的值,如果想要在路由意外的其他地方引用這些值,讓app可以訪問是非常有用的。同樣地,注意一下,res.app是可以在路由內部訪問的,所以不用經常傳遞app對象。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 行家匯 的精彩文章:

Node在shell中執行命令
Node的流和外部應用程序
Node執行外部程序時候出現的異常
Node中的UDP客戶端服務應用
Node通過UDP傳輸文件

TAG:行家匯 |

您可能感興趣

路由器分出的線可以再接一個路由器嗎?
小米推出旗艦路由:兩個路由,三種連接,別墅也能輕鬆覆蓋
家裡住別墅的都來看看,小米新款分散式旗艦路由器發布
擁有區塊鏈技術的隨身路由問世 十分安全
一個月不關路由器要耗多少電?家中路由器多久應該關一次?
極路由事件背後,P2P與區塊鏈的4種隱秘關係
小米旗艦路由器到來:對用戶體驗做出重新設計
極路由X上手,一台能賺錢的區塊鏈路由器!
從斐訊到極路由,區塊鏈的旗號還能用多久?
路由器分出的線可以再接一個路由器嗎?三大運營商給出答案
家裡路由器上放個它,路由器信號瞬間提升10倍,現在知道還不晚
一個網路放置兩個路由器的設置方法
家裡的路由器多久關一次比較合適?
我用兩台免費的路由器在一年內省下了近兩千元!
用了這麼多年的路由器,你知道路由器一直不關損耗多大么?
哈爾濱中軟分享:分不清路由器和貓的區別
路由器市場最大的公司:年收入超過200億,同領域內幾乎沒有對手
路由器市場最大公司:年收入超過200億,同領域內幾乎沒有對手
家裡的路由器到底多久關一次比較合適?天天開著也不是辦法
你家路由器多久關一次?不關路由器,一個月耗電多少你知道嗎?