中間件(英語:Middleware),是提供系統軟件和應用軟件之間鏈接的軟件,以便於軟件各部件之間的溝通,特別是應用軟件對於系統軟件的集中的邏輯,在現代信息技術應用框架如Web服務、面向服務的體系結構等中應用比較普遍。如數據庫、Apache的Tomcat,IBM公司的WebSphere,BEA公司的WebLogic應用服務器,東方通公司的Tong系列中間件,以及Kingdee公司的等都屬於中間件。前端
好吧,做爲一個前端渣渣,看不懂。再看看百度百科吧,下面是一些相關中間件:node
OK,到這裏,仍是一臉懵逼。。。別灰心,由於術業有專攻,中間件是一個比較寬泛的概念,咱們縮小一下範圍,瞭解一下web相關的中間件,簡單點:web
說了這麼多,好像並無什麼實質性的內容,都是一些抽象的概念,來點實際的,瞭解一下Node中間件。 近幾年來,在企業開發中愈來愈推崇微服務架構,而它在不經意間卻致使前端同窗和後端同窗之間關於 API 接口顆粒度的爭吵,愈來愈多見:數據庫
歸結爲一個問題:『服務端設計的接口到底是面向 UI 仍是隻是通用服務?』express
2015 年,Sam Newman 對此提出了 Pattern: Backends For Frontends,簡稱 BFF,國內也俗稱爲粘合層。後端
能夠看出,這一層一直都存在,只不過是由後端同窗維護而已。 但咱們知道,前端貼近用戶側,需求的變化太快了,後端同窗來維護會很累。 在 BFF 理念中,最重要的一點是:服務自治,誰使用誰開發,即它應該由前端同窗去維護。安全
無它,就是須要這樣的一箇中間層,但後端同窗不太想管了(也管不過來),因此大部分前端同窗選擇了一個更順手的 Node.js ,僅此而已。服務器
不,你須要根據你的業務場景,還有團隊的技術架構,來具體狀況具體分析。切記, BFF 不限制具體技術選型。 BFF 不可避免的會帶來:研發成本必定程度上的增長,對開發者的能力要求增長。網絡
Express和Koa是目前最主流的基於node的web開發框架,他們的開發者是同一班人馬。貌似如今Koa更加流行,可是仍然有大量的項目在使用Express,因此這裏咱們說說Express中間件的原理。如下所說中間件皆爲Express中間件。架構
中間件的本質就是一個函數,在收到請求和返回相應的過程當中作一些咱們想作的事情。Express文檔中對它的做用是這麼描述的:
執行任何代碼。 修改請求和響應對象。 終結請求-響應循環。 調用堆棧中的下一個中間件。
Express文檔中把他們分爲了五類,可是他們的原理相同,只是用法不一樣:
應用級中間件 路由級中間件 錯誤處理中間件 內置中間件 第三方中間件
很是簡單。
var express = require('express') var app = express(); app.use('/user', function (req, res, next) { //TODO next(); }); app.listen(8080)
總結: 面向前端的Node中間件並不能提升咱們的應用性能,而是規範咱們的開發流程,提升咱們的工做效率,遇到問題可以更快的解決,至因而否使用,就要因地制宜了。