學習筆記:用Nodejs搭建一個簡單的本地服務器

目標

向一個input輸入框,將value經過ajax的get/post方法傳到服務器,服務器再返回一個值。html

實現

  • 咱們須要一個HTTP服務器node

  • 對於不一樣的請求,根據請求的URL,咱們的服務器須要給予不一樣的響應,所以咱們須要一個路由,用於把請求對應到請求處理程序(request handler)ajax

  • 當請求被服務器接收並經過路由傳遞以後,須要能夠對其進行處理,所以咱們須要最終的請求處理程序express

  • 咱們須要從html文件裏提取數據以及展現服務器傳入的數據,所以須要將html和服務器結合起來服務器

第一步:搭建本地服務器

server.js
clipboard.png框架

關於nodejs的模塊機制,能夠參考這篇文章`深刻淺出Node.js(三):深刻Node.js的模塊機制,講得很是詳細和透徹函數

http.createServer(onRequest).listen(8888)建立了一個服務器,監聽端口8888,onRequest即爲端口接收到請求時進行處理的回調函數。
在這個回調函數裏,咱們有兩個參數reqres即接收到的請求和做出的響應。
經過url.parse(req.url).pathname解析出請求的路徑,以後咱們將根據不一樣的路徑指向不一樣的處理函數,即路由。
由於get和post方法傳入參數的方式不同,所以咱們分別對其處理,get方法咱們知道傳參數是在url後面用?name=value這樣的形式表示,所以咱們仍是經過解析請求地址來得到url.parse(req.url).query
post方法傳參數是在body中,所以能夠經過dataend方法監聽數據的接收,直到接收完畢。post

第二步:建立路由

router.js
clipboard.pngurl

這一步就將服務器接收到的請求傳遞給路由進行處理,上一步咱們注意到數據接收完畢後使用了函數route(handle, pathname, response, postData)就是把請求放在路由裏了,一樣根據路徑的不一樣,在路由裏選擇不一樣的處理函數handle[pathname](response, postData);
requestHandler.js
clipboard.pngspa

這裏就定義了不一樣的處理函數的具體內容,好比這裏有start,upload,init三種處理方式,怎樣將這三種方式對應到不一樣的路徑請求呢?
index.js

clipboard.png

這裏纔是咱們最重要的入口文件,handle = {}裏面就是以鍵名和鍵值的方式將請求路徑與處理函數對應起來。好比在地址欄裏輸入"http://loacalhost:8888/public/index.html"就會調用init這個函數,這樣結構就很清楚了吧

再理一下思路:
首先啓動服務器,在終端裏輸入node index.js,初始化處理函數後,進入server.js裏監聽發送到端口8888的請求,將請求地址和請求數據都傳遞給路由route.js,路由判斷請求是否符合要求,再分門別類地傳遞給對應的處理函數,這樣就完成啦。

再看一下index.html文件

clipboard.png

這裏一看就明白了。

以上就是nodejs新手嘗試的一個小例子,雖然很簡陋,也梳理了一下大概流程,固然真的項目中會結合express框架來應用,就更加方便了。

相關文章
相關標籤/搜索