[英]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.js
和animals.js
文件,它會工作,因為這兩個充當快遞()我們稱之為的小應用程序的新實例. 那么new express.Router()
對象有什么用呢?
express.Router()
對象中公開的相同方法不是可以通過多個express()
實例(如模塊化路由器處理程序等express()
實現的功能嗎?
簡單來說,Router 是 express 應用程序的輕量級版本,或者如 Express 文檔所說,是一個迷你 express 應用程序。
全局 express 對象帶有更多資源來支持視圖和各種設置,而路由器基本上提供路由 API,如.use
、 .get
、 .param
和route
。 路由器對象代表中間件和路由的隔離實例,只能執行中間件和路由功能,非常適合高效模塊化路由處理。
現在我想知道我是否在cars.js 和animals.js 文件中使用
express()
更改express.Router()
,它會起作用,因為它們都充當express() 的新實例,我們稱之為mini-app . 那么newexpress.Router()
對象有什么用呢?
好吧,您應該仍然可以使用express()
而不是express.Router()
用於隔離路由目的,但同時您也帶來了許多您可能不會使用的額外代碼,因此這是不必要的開銷。
這就是創建express.Router()
原因:提供路由模塊化,而無需創建額外的應用程序。
相關: https : //en.wikipedia.org/wiki/Liskov_substitution_principle
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.