Koa 是由 Express 原班人馬親情打造的新一代web框架。既然已經有 Express 了,為什么又要搞一個Koa出來呢?因為 Koa 相比 Express 體積更小,代碼更健壯,作用更純粹。
Koa2 使用最新的 ES6 語法和 aync 函數進行開發,因此 Koa2 要求 nodejs 的版本不低於 7.6.0。
使用 Koa 創建一個服務器非常簡單,新建文件 app.js,放置以下代碼:
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
console.log('listening 3000 ...');
且先不管具體的語法含義,先運行該文件node app.js
,即創建並啟動了一台服務器,在瀏覽器中輸入網址 http://localhost:3000 即可以看到
Hello World
之所以說Koa作用更純粹,是因為Koa本身只提供了有限的最基本的功能,一切需要的額外功能都是通過中間件實現,比如路由管理,log日志,錯誤處理等等。所謂中間件,就像中間人一樣,所有與客戶端之間的通信都要經過它們,它們會對會話的輸入和輸出做具體的處理。
服務器說白了不就是接受客戶端請求(通常是一個url)並返回相應資源的一個東西嘛,因此路由管理器(koa-router)應該是(koa)最為重要的一個中間件了。接下來給 app 添加路由:
const Koa = require('koa');
const app = new Koa();
const Router = require('koa-router');
const router = new Router();
router.get(/.*/, async (ctx, next)=>{ // 匹配 get 請求
ctx.body = `Your request url is: ${ctx.path}`;
});
app.use(router.routes());
app.listen(3000);
console.log('listening 3000 ...');
運行 app 之后在瀏覽器中隨便輸入一個地址 http://localhost:3000/your/url 就能看到
Your request url is: /your/url
這只是一個簡單例子,實際上你可以返回一張圖片,json數據,html頁面等等。