我們來分解一下這個應用,為了實現上文的用例,我們需要實現哪些部分呢?
* 我們需要提供Web頁面,因此需要一個_HTTP服務器_
* 對于不同的請求,根據請求的URL,我們的服務器需要給予不同的響應,因此我們需要一個_路由_,用于把請求對應到請求處理程序(request handler)
* 當請求被服務器接收并通過路由傳遞之后,需要可以對其進行處理,因此我們需要最終的_請求處理程序_
* 路由還應該能處理POST數據,并且把數據封裝成更友好的格式傳遞給請求處理入程序,因此需要_請求數據處理功能_
* 我們不僅僅要處理URL對應的請求,還要把內容顯示出來,這意味著我們需要一些_視圖邏輯_供請求處理程序使用,以便將內容發送給用戶的瀏覽器
* 最后,用戶需要上傳圖片,所以我們需要_上傳處理功能_來處理這方面的細節
我們先來想想,使用PHP的話我們會怎么構建這個結構。一般來說我們會用一個Apache HTTP服務器并配上mod_php5模塊。
從這個角度看,整個“接收HTTP請求并提供Web頁面”的需求根本不需要PHP來處理。
不過對Node.js來說,概念完全不一樣了。使用Node.js時,我們不僅僅在實現一個應用,同時還實現了整個HTTP服務器。事實上,我們的Web應用以及對應的Web服務器基本上是一樣的。
聽起來好像有一大堆活要做,但隨后我們會逐漸意識到,對Node.js來說這并不是什么麻煩的事。
現在我們就來開始實現之路,先從第一個部分--HTTP服務器著手。