前言
女朋友在學(xué)編程坦辟,今日問(wèn)我: 路由函數(shù)做了哪些事?
我覺(jué)得是一個(gè)比較簡(jiǎn)單的概念氧秘,想搜一篇解釋的比較清晰的文章給她看穷遂,但沒(méi)有搜到(可能由于太基礎(chǔ), 或者搜索姿勢(shì)不對(duì))晾虑,最后只得自己寫給她.
以下是一些拙見, 希望能對(duì)需要的人提供一些幫助.
路由函數(shù)的做的三件事
路由函數(shù)簡(jiǎn)單來(lái)說(shuō)只做了三件事:
- 接收請(qǐng)求
- 根據(jù)請(qǐng)求的 path 找到對(duì)應(yīng)的處理函數(shù)并執(zhí)行, 這一步也稱為路由分發(fā)
- 將處理函數(shù)的返回的結(jié)果(也叫做響應(yīng))發(fā)送給請(qǐng)求者
由此看來(lái), 路由函數(shù)并不設(shè)計(jì)具體的處理邏輯, 處理邏輯都應(yīng)放在處理函數(shù)中執(zhí)行. 路由函數(shù)相當(dāng)于請(qǐng)求者和響應(yīng)者中間的消息傳遞人.
將上面的概念再概況一下
- 從請(qǐng)求中拿數(shù)據(jù)
- 處理數(shù)據(jù)
- 將處理函數(shù)返回的數(shù)據(jù)給出去
所以一個(gè)路由函數(shù)只應(yīng)該有三行, 每一行是一個(gè)函數(shù)(一個(gè)函數(shù)只做一件事).
以 express 框架的語(yǔ)法為例:
app.use(path, function(request) {
// 取數(shù)據(jù)
var data = dataOfRequest(request)
// 處理數(shù)據(jù)
var response = responseFromRequestData(data)
// 返回響應(yīng)
sendResponse(response)
})