路由,顧名思義,是指我們要針對不同的url有不同的處理方式。例如處理/start的「業務邏輯」就應該和處理/upload的不同。
在現在的實現下,路由過程會在路由模組中「結束」,並且路由模組並不是真正針對請求「採取行動」的模組,否則當我們的應用程式變得更為複雜時,將無法很好地擴充套件。
我們暫時把作為路由目標的函式稱為請求處理程式。現在我們不要急著來開發路由模組,因為如果請求處理程式沒有就緒的話,再怎麼完善路由模組也沒有多大意義。
requesthandlers的模組
應用程式需要新的部件,因此加入新的模組 -- 已經無需為此感到新奇了。我們來建立乙個叫做requesthandlers的模組,並對於每乙個請求處理程式,新增乙個佔位用函式,隨後將這些函式作為模組的方法匯出:
requesthandlers的模組,並對於每乙個請求處理程式,新增乙個佔位用函式,隨後將這些函式作為模組的方法匯出:
requesthandlers.js
function start()
function upload()
exports.start = start;
exports.upload = upload;
router模組
通過檢查給定的路徑對應的請求處理程式是否存在,如果存在的話直接呼叫相應的函式
router.js
function route(handle, pathname) else
} exports.route = route;
server模組
處理請求模組
index模組
啟動模組,主模組
index.js
var server = require("./server");
var router = require("./router");
var requesthandlers = require("./requesthandlers");
//區分大小寫的
var handle = {}
handle["/"] = requesthandlers.start;
handle["/start"] = requesthandlers.start;
handle["/upload"] = requesthandlers.upload;
server.start(router.route, handle);
執行後效果
如果現在啟動應用(node index.js,始終記得這個命令列),隨後請求乙個url,我請求的分別是是http://localhost:8888/,http://localhost:8888/start,http://localhost:8888/start1,你將會看到應用輸出相應的資訊,這表明我們的http伺服器已經在使用路由模組了,並會將請求的路徑傳遞給路由,路由再找到對應的處理函式:
nodejs的路由控制製作
要求 當使用者訪問 student 1234567890 的查詢此學號的學生資訊。當使用者訪問 teacher 645433 的時候,查詢此老師的資訊。其他的,我們提示錯誤。如果位數不對,也是提示位數不對。substr函式來判斷此時的開頭 if userurl.substr 0,9 student ...
在VS2005如何刪除已新增的訊息處理函式
下午部門乙個同事問我 在vs 2005中如何刪除已經新增的訊息處理函式。她覺得在標頭檔案 訊息巨集和實現檔案中三處刪除乙個函式太麻煩了。對此我還真沒試過,vc 6.0我知道是在class wizard中刪除,在vs 2005中我已習慣在 中修改,還真沒試過。回家後摸索了一下,找到了,下面以刪除刪除檢...
在VS2005如何刪除已新增的訊息處理函式
下午部門乙個同事問我 在vs 2005中如何刪除已經新增的訊息處理函式。她覺得在標頭檔案 訊息巨集和實現檔案中三處刪除乙個函式太麻煩了。對此我還真沒試過,vc 6.0我知道是在class wizard中刪除,在vs 2005中我已習慣在 中修改,還真沒試過。回家後摸索了一下,找到了,下面以刪除刪除檢...