一、koa簡介javascript
koa是express團隊開發的一個更加輕量級的服務端開發框架,也是將來的趨勢java
二、安裝es6
npm i -g koa-generator //全局安裝koa腳手架express
三、建立項目npm
koa2 項目名稱json
例如:koa2 -e koa2-learn //e的意思是使用ejs模板引擎,要不默認jadepromise
將爲咱們建立一個koa-learn目錄cookie
接下來進入該目錄,根據提示執行cnpm iapp
可能須要進行2次安裝,看提示有無Pass --update-binary...框架
複製DEBUG...代碼,運行koa
在package.json文件中能夠修改啓動方式:
npm run dev能夠實現修改過程當中的監聽
端口默認運行在3000
四、
koa中的全局變量被稱爲global而不是window
五、koa異步,es6異步語法
async(param)=>{
await ... //只有在有聲明async的方法內才準使用await
}
解決回調地獄,咱們可使用Promise,也可使用await
舉例分析:
const a=await A const b=await B const c=await C
上述代碼爲僞代碼,ABC是不一樣的異步操做
在A未執行完成前不會執行下一行代碼,以此類推
至關於用同步的寫法完成了異步的過程
這裏的ABC就是Promise對象,若是不是promise對象將自動轉換,即Promise.resolve(data)
正確執行promise過程後的傳給resolve的data將被賦值給a
六、koa2中間件
const+require引入中間件。經過app.use聲明使用
引用時按順序,使用時沒有順序
中間件都會被通過兩次
一個簡單的中間件編寫:
function pv(ctx){ //ctx是一個全局對象,掛載了request和response的信息 global.console.log(ctx.path) module.export=function(){ return async function(ctx,next){ pv(ctx) await next()//pv中間件處理完畢,准許移交下一個中間件處理 } } }
使用時,在app.js中書寫:
const pv=require('./middleware/koa-pv')
app.use(pv())
保證了兩次交互。
八、koa-router 的用法:
根據子域名不一樣可配置不一樣的路由文件:
body屬性返回相應的一些數據,能夠返回多種類型:字符串,json等
render方法返回一個頁面
const router =require('koa-router')
router.prefix('./user')
九、koa讀寫cookie
ctx.get/ctx.set