koa2入門

github: https://github.com/noyanse1023/learn-koa2019.git
koa 斷點調(diào)試:
在vscode中在要調(diào)試的文件界面按下F5就啟動了
mac 小技巧
https://www.cnblogs.com/hongrunhui/p/5928833.html
參考:https://segmentfault.com/a/1190000009494041

1.初始化項目

1.mkdir koa //新建koa文件夾
2.cd koa 
3.npm init //初始化
4.npm install koa --save

2.執(zhí)行簡單的demo

1.touch main.js //新建main.js文件
2.在main.js中輸入:
const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
  ctx.body = 'Hello World';
});

app.listen(3000);
3.執(zhí)行node main.js

可以安裝熱nodemon 自動編譯

npm i nodemon --save-dev
在package.json中寫
  "scripts": {
    "start": "nodemon index.js"
  },
執(zhí)行 npm start 就可以自動編譯啦~~

3.搭建路由與Controller

Koa本質(zhì)上是調(diào)用一系列的中間件,來處理對應(yīng)的請求孕似,并決定是否傳遞到下一個中間件去處理。我們來寫一個最簡單的中間件試試。

/*
//main.js代碼
app.use(async ctx => {
  ctx.body = 'Hello World';
});
*/
//改成
app.use(ctx => {
    ctx.body = `Your website url is:${ctx.request.url}`
})
  • 這段代碼中,app.use 的 function 就是最簡單的一個中間件畔柔,接受了請求甜奄,讀出請求路徑,并返回到客戶端赏淌。
  • 所以,接口的本質(zhì)鸟废,就是判斷不同的請求鏈接猜敢,干不同的事情,返回相應(yīng)的結(jié)果盒延。那么我們得需要一個路由中間件koa-router來處理分發(fā)請求
    npm install koa-router --save //安裝路由中間件
    main.js:
const Koa = require('koa')
const Router = require('koa-router')
const app = new Koa()
const router = new Router()

router.get('/', ctx => {
  ctx.body = `這是主頁`
})

router.get('/user', ctx => {
  ctx.body = `這是user頁`
})

router.get('/post', ctx => {
  ctx.body = ctx.request.body
})

router.get('/async', async ctx => {
  const sleep = async (ms) => {
    return new Promise(resolve => {
      setTimeout(() => {
        resolve(true)
      }, ms)
    })
  }
  await sleep(1000)
  ctx.body = `這是異步處理頁`
})

app
  .use(router.routes())
  .use(router.allowedMethods())

app.listen(3000)

處理 post請求缩擂,要用中間件bodyparser

npm install koa-bodyparser --save

做一下模塊化處理

-koa
  -node_modules
  -controller
    user.js
  -main.js
  -router.js
  -package.json

main.js:

const Koa = require('koa');
const bodyParser = require('koa-bodyparser')
const app = new Koa();
const router = require('./router')

app.use(bodyParser())

app
    .use(router.routes())
    .use(router.allowedMethods())
    
app.listen(3000);
console.log('server is running at port 3000......')

routers:

const Router = require('koa-router')
const router = new Router()
const user = require('./controller/user')

router.post('/user/login',user.login)
router.get('/user/profile',user.profile)

module.exports = router

controller/user.js:

const sleep = async (ms) => {
    return new Promise(reslove => {
        setTimeout(() => {
            reslove(true)
        })
    },ms)
}
module.exports = {
    login(ctx) {
        ctx.body = {
            username: ctx.request.body.username
        }
    },
    async profile(ctx) {
        await sleep(1000)
        ctx.body = {
            username: '學(xué)長',
            sex: 'man',
            age: '27'
        }

    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市添寺,隨后出現(xiàn)的幾起案子胯盯,更是在濱河造成了極大的恐慌,老刑警劉巖计露,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件博脑,死亡現(xiàn)場離奇詭異,居然都是意外死亡票罐,警方通過查閱死者的電腦和手機叉趣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來该押,“玉大人疗杉,你說我怎么就攤上這事〔侠瘢” “怎么了烟具?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長奠蹬。 經(jīng)常有香客問我朝聋,道長,這世上最難降的妖魔是什么囤躁? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任冀痕,我火速辦了婚禮荔睹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘金度。我一直安慰自己应媚,他們只是感情好严沥,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布猜极。 她就那樣靜靜地躺著,像睡著了一般消玄。 火紅的嫁衣襯著肌膚如雪跟伏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天翩瓜,我揣著相機與錄音受扳,去河邊找鬼。 笑死兔跌,一個胖子當(dāng)著我的面吹牛勘高,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坟桅,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼华望,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仅乓?” 一聲冷哼從身側(cè)響起赖舟,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夸楣,沒想到半個月后宾抓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡筋岛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年支救,在試婚紗的時候發(fā)現(xiàn)自己被綠了羞延。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡讲衫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸟妙,到底是詐尸還是另有隱情焦人,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布重父,位于F島的核電站花椭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏房午。R本人自食惡果不足惜矿辽,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袋倔,春花似錦雕蔽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至前塔,卻和暖如春嚣艇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背华弓。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工食零, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寂屏。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓贰谣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親迁霎。 傳聞我的和親對象是個殘疾皇子吱抚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容