簡體   English   中英

express.Router() 與多個 express() 對象之間的區別?

[英]Difference between express.Router() vs multiple express() object?

我知道使用新的 express 4 路由器我們可以將多個路由路徑組織到不同的文件中,如下所示:

// In cars.js
 const router = express.Router();
 router.get('/brands', function(req, res) { ... });
 router.get('/models', function(req, res) { ... });
 module.exports = router;

// In animals.js
const routerTwo = express.Router();
routerTwo.get('/domestic', function(req, res) { ... });
routerTwo.get('/wild', function(req, res) { ... });
module.exports = routerTwo;

// In main.js
app.use('/cars', router);  // matches `/cars/brands`, `/cars/models`.
app.use('/animals', routerTwo); // matches `animals/domestic`, `animals/wild`.

現在我想知道如果我改變express.Router()用簡單的express()兩個cars.jsanimals.js文件,它會工作,因為這兩個充當快遞()我們稱之為的小應用程序的新實例. 那么new express.Router()對象有什么用呢?

express.Router()對象中公開的相同方法不是可以通過多個express()實例(如模塊化路由器處理程序等express()實現的功能嗎?

簡單來說,Router 是 express 應用程序的輕量級版本,或者如 Express 文檔所說,是一個迷你 express 應用程序。

全局 express 對象帶有更多資源來支持視圖和各種設置,而路由器基本上提供路由 API,如.use.get.paramroute 路由器對象代表中間件和路由的隔離實例,只能執行中間件和路由功能,非常適合高效模塊化路由處理。

現在我想知道我是否在cars.js 和animals.js 文件中使用express()更改express.Router() ,它會起作用,因為它們都充當express() 的新實例,我們稱之為mini-app . 那么new express.Router()對象有什么用呢?

好吧,您應該仍然可以使用express()而不是express.Router()用於隔離路由目的,但同時您也帶來了許多您可能不會使用的額外代碼,因此這是不必要的開銷。

這就是創建express.Router()原因:提供路由模塊化,而無需創建額外的應用程序。

相關: https : //en.wikipedia.org/wiki/Liskov_substitution_principle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM