2014-06-09 46 views
3

這可能是一個明顯的問題,但我是node.js的新手。爲什麼Express不是中間件?

Express似乎別名連接(express()而不是connect()等)。鑑於Connect已經是一箇中間件框架,Express提供的是不是一個簡單的Connect中間件,並且需要這個包裝?

回答

3

Express確實來自連接。很長一段時間,它已經使用了大部分連接的中間件。原本表達被描述爲Sinatra像框架。 Sinatra(紅寶石)引入域並通過http服務器進行路由,例如瘦。 Express的路由器受Sinatra影響很大。早些時候Connect連接斷開了對路由的支持。它的開發人員旨在通過http成爲一箇中間件生態系統,以便可以構建許多框架。之後,他們分道揚went。

Express是功能更全面,更靈活的http服務器。連接被認爲是一個低級框架(你將不得不自己做一些腳手架)。 Express從一個連接包裝發展而來,儘管它看起來非常相似。

現在,Koa受益於express/connect的中間件體系結構。它爲其中間件鏈使用新的Ecmascript-6功能。

+0

但是如果Connect是低級框架,Express爲什麼不擴展它而不是包裝它(並按照其他答案中的指定將其重新創建爲4)? –

+0

@AndreyShchekin部分原因是社區之間的差異。如果Senchalabs決定對連接進行一些更改,則會直接影響Express。當路由器被刪除時,它是連接最常用的功能之一。快遞開發商認爲這是一個不好的跡象。由於Sinatra就像路由是Express的精髓所在,所以它的存在就成了問題。我不認爲這是由選擇決定的。根據我的理解,連接從社區獲得很多支持,但沒有互動。感謝所有貢獻者,Connect有着堅實的基礎。 – user568109

+0

感謝您的詳細解釋。 –

2

從表4開始,connect is no longer a dependency

Express增加了更多功能,就像Connect在純HTTP服務器上添加功能一樣。這包括相同的特徵:

  • 更容易,更靈活的路由
  • 支持視圖
  • 支持反向代理和ETag的
  • 大量關於請求,響應,和應用的輔助功能對象
  • 等...

現在,連接是pretty barebones和大多數只是支持使用middlewar e - 沒有其他功能。

+0

那麼它現在是一個替代中間件框架?這有助於理解。 –

+0

是的,它是相同的功能(中間件)加上其他所有功能。 – mscdex

相關問題