什么是Koa?
Koa 是一個(gè)新的 web 框架,由 Express 幕后的原班人馬打造, 致力于成為 web 應(yīng)用和 API 開發(fā)領(lǐng)域中的一個(gè)更小、更富有表現(xiàn)力、更健壯的基石。 通過利用 async 函數(shù),Koa 幫你丟棄回調(diào)函數(shù),并有力地增強(qiáng)錯(cuò)誤處理。 Koa 并沒有捆綁任何中間件, 而是提供了一套優(yōu)雅的方法,幫助您快速而愉快地編寫服務(wù)端應(yīng)用程序。
Koa vs Express
Koa使用promises和async函數(shù)來擺脫回調(diào)地獄的應(yīng)用并簡(jiǎn)化錯(cuò)誤處理。它暴露自己ctx.request和ctx.response對(duì)象而不是節(jié)點(diǎn)req和res對(duì)象。另一方面,Express 使用其他屬性和方法擴(kuò)充節(jié)點(diǎn)req和res對(duì)象,并包括許多其他“框架”功能,例如路由和模板,Koa沒有。
因此,如果你希望更接近node.js和傳統(tǒng)的node.js樣式編碼,你可能希望堅(jiān)持使用Connect / Express或類似的框架。如果你想擺脫回調(diào),請(qǐng)使用Koa。
總結(jié)
Koa是一個(gè)比Express更精簡(jiǎn),使用node新特性的中間件框架,相比之前express就是一個(gè)龐大的框架
如果你喜歡diy,很潮,可以考慮Koa,它有足夠的擴(kuò)展和中間件,而且自己寫很簡(jiǎn)單 如果你想簡(jiǎn)單點(diǎn),找一個(gè)框架啥都有,那么先Express如果你有興趣了解更多不同,請(qǐng)?jiān)L問Koa vs Express
Koa 項(xiàng)目搭建
注意,本篇教程面向有一定Koa使用經(jīng)驗(yàn)的用戶。如果,你還不了解Koa,請(qǐng)先看下面的文檔Koa 中文文檔
Koa 文檔過于精簡(jiǎn),雖然將每一個(gè)API都進(jìn)行解釋說明,但還是很難將其組織起來進(jìn)行應(yīng)用,對(duì)于初學(xué)者來說可謂是很不友好。
筆者第一個(gè)Koa項(xiàng)目,將所有接口,邏輯,配置等全部寫在了app.js中,雖說完美運(yùn)行,但是可讀性,可維護(hù)性極差,所以一個(gè)好的目錄結(jié)構(gòu)尤為重要
目錄創(chuàng)建
config - 配置 models - 數(shù)據(jù)庫(kù)模型(ROM) controller - 控制器 middlewares - 中間件 public - 靜態(tài)資源 service - 服務(wù) router - 路由 app.js - 啟動(dòng)文件依賴安裝
創(chuàng)建好項(xiàng)目目錄后我們需要安裝一些依賴,來供我們使用
babel-core/babel-preset-es2015 - 讓 nodeJs 支持 es6 modules koa - koa2 koa-body - request body 解析 koa-cache-control - 緩存控制 koa-compress - gzip koa-cors - 跨域 koa-logger - 日志 koa-onerror - 錯(cuò)誤處理 koa-router - 路由 koa-session - session koa-static - 靜態(tài)資源服務(wù) koa-helmet - 安全 md5 - md5 加密 mkdirp - 遞歸創(chuàng)建目錄可以根據(jù)自己的需求進(jìn)行選擇,但是一些依賴是必須安裝的
koa - koa2 koa-body - request body 解析 koa-router - 路由后面的內(nèi)容會(huì)講解每個(gè)插件有什么用,如何去用。
目錄詳解
config
config是我們的配置文件,比如:
數(shù)據(jù)庫(kù)(mysql,oracle,redis等) OSS ...實(shí)際運(yùn)用:
confirg database.config.js(新建)新聞熱點(diǎn)
疑難解答
圖片精選