koa
基於nodejs的web應用框架,由express的原班人馬打造,致力於提供乙個輕量級的框架,幾乎所有功能都需要第三方的中介軟體來輔助完成,使用了node的新特性,比express更簡潔,更輕量
express與koa對比
koa相對於express更加年輕,意味著express生態更加成熟,koa比express更加輕量,本身只提供乙個架子,幾乎所有功能都需要依賴於第三方外掛程式,而express自身就整合了許多功能,這也意味著express更加笨重,express對於初學者更加友好,自身的功能足夠使用,而koa則學習成本更高,畢竟連核心的路由也去掉了,都需要通過學習第三方中介軟體來實現,而很多中介軟體的功能一樣,api卻不同,koa使用了很多node的新特性及es6的新特性,而express則語法上比較陳舊一點,但是相容性更好
koa起步
生成專案檔案並初始化包管理檔案package.json
npm install koa -s
// 引入koa模組
const koa =
require
('koa');
// 例項化koa
newkoa()
;// 建立接受context物件的函式,context由koa提供,表示一次對話的上下文
const
main
= ctx =>
// 使用載入main函式,註冊到koa
use(main)
;// 監聽並啟動服務
listen
(3000
);
銜接上文物件,ctx.response.type設定返回資料型別
const koa = require('koa');
const main = ctx =>
路由
簡單來說路由間url到函式的對映,乙個url指向乙個位址,由此執行乙個對應的規則,通常在web中理解為乙個函式,而url到這個函式的過程稱之為路由
原生路由
**一般都是由多個頁面組成的,不同的url指向不同的頁面,在koa中可以通過ctx.request.path獲取使用者請求的路徑
我們可以將我們的body指向乙個網頁模板,通過fs.createreadstream()獲取檔案流
const koa = require('koa');
const fs = require('fs');
const main = ctx =>
else
}
中介軟體
簡單來說就是處於作業系統和應用軟體之間的乙個類或者說外掛程式,具有承上啟下的作用,用於連線兩個模組,可重用的與業務邏輯無關的各種元件
koa-route模組
koa-route是koa的乙個第三方中介軟體,當然還有koa-router,文章裡的相對簡單一點
const koa = require('koa');
const fs = require('fs');
const route = require('koa-route');
const about = require('./about.js');
const home = require('./home.js');
home.js
const home = cxt =>
module.exports = home;
about.js
const about = cxt =>
module.exports = about;
靜態資源
這裡用到了koa-static
const koa = require('koa');
const path = require('path');
const static = require('koa-static');
const main = static(path.join(__dirname, 'static'));
重定向
重新指定方向(路由),有時候當使用者訪問乙個頁面,當使用者許可權不夠或者其他問題的時候,我們需要給使用者乙個響應,則需要重新為使用者指定頁面
const koa = require('koa');
const route = require('koa-route');
const redirect = ctx => ;
const main = ctx => ;
非同步中介軟體
當出現非同步操作時,比如非同步讀取檔案,查詢資料庫等,我們就必須把我們的中介軟體設定為非同步
const koa = require('koa');
const route = require('koa-route');
const fs = require('fs');
function readfile() )
})}const main = async function (ctx, next) ;
中介軟體的合成
koa-compose模組可以將多個中介軟體合成為乙個
const compose = require('koa-compose');
const logger = (ctx, next) => $ $`);
next();
}
const main = ctx => ;
const middlewares = compose([logger, main]);
錯誤處理
如果**執行過程中發生錯誤,我們需要把錯誤資訊返回給使用者。http 協定約定這時要返回500狀態碼。
ctx.throw()
const koa = require('koa');
const main = async function (ctx, next) ;
404錯誤
const main = ctx => ;
錯誤處理中介軟體
const handler = async (ctx, next) =>
catch (err) ;
}};const main = ctx => ;
async和await需要配合使用,await的是乙個非同步資料,await會給其包裹乙個promise進行返回,可以看看阮一峰大大的文章,誰用誰爽!!! 使用Django搭建web應用操作
1 如果要用到虛擬環境,要先開虛擬環境 linux source env bin activate windows env scripts activate 2 安裝django模組 pip install django 3 進入虛擬環境檔案目錄,建立django專案 cd env projects...
使用 koa2 快速搭建 mock server
在前後端分離式開發中,經常遇到需要自己 mock 資料測試介面的情況,下面是一種使用 koa2 快速搭建 mock 服務的實現方式。首先全域性安裝 koa generator npm install g koa generator 在合適位置上初始化目錄結構 koa2 mock server生成的目...
使用下一代web開發框架koa2搭建自己的輕伺服器
koa 是由 express 原班人馬親情打造的新一代web框架。既然已經有 express 了,為什麼又要搞乙個koa出來呢?因為 koa 相比 express 體積更小,更健壯,作用更純粹。koa2 使用最新的 es6 語法和 aync 函式進行開發,因此 koa2 要求 nodejs 的版本不...