起因
最近在學(xué)習(xí)koa的使用, 由于koa是相當(dāng)基礎(chǔ)的web框架,所以一個(gè)完整的web應(yīng)用所需要的東西大都以中間件的形式引入,比如koa-router, koa-view等。在koa的文檔里有提到:koa的中間件模式與express的是不一樣的,koa是洋蔥型,express是直線型,至于為什么這樣,網(wǎng)上很多文章并沒(méi)有具體分析?;蛘吆?jiǎn)單的說(shuō)是async/await的特性之類。先不說(shuō)這種說(shuō)法的對(duì)錯(cuò),對(duì)于我來(lái)說(shuō)這種說(shuō)法還是太模糊了。所以我決定通過(guò)源碼來(lái)分析二者中間件實(shí)現(xiàn)的原理以及用法的異同。
為了簡(jiǎn)單起見(jiàn)這里的express用connect代替(實(shí)現(xiàn)原理是一致的)
用法
二者都以官網(wǎng)(github)文檔為準(zhǔn)
connect
下面是官網(wǎng)的用法:
var connect = require('connect'); var http = require('http'); var app = connect(); // gzip/deflate outgoing responses var compression = require('compression'); app.use(compression()); // store session state in browser cookie var cookieSession = require('cookie-session'); app.use(cookieSession({ keys: ['secret1', 'secret2'] })); // parse urlencoded request bodies into req.body var bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({extended: false})); // respond to all requests app.use(function(req, res){ res.end('Hello from Connect!\n'); }); //create node.js http server and listen on port http.createServer(app).listen(3000);
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。