1.中間件
/**
* 錯誤處理中間件
*/
// 引入模塊
const Koa = require('koa');
const router = require('koa-router')(); /*引入是實例化路由 推薦*/
// 實例化
let app = new Koa();
// Koa中間件
// 匹配任何路由,如果不寫next,這個路由被匹配到了就不會繼續(xù)向下匹配
// www.域名.com/news
app.use(async (ctx, next) => {
console.log('這是一個中間件01');
next();
if(ctx.status == 404) {
ctx.status = 404;
ctx.body = '這是一個 404 頁面';
} else {
console.log(ctx.url);
}
})
router.get('/', async (ctx) => {
ctx.body = '首頁';
})
router.get('/news', async (ctx) => {
ctx.body = '這是一個新聞2';
})
router.get('/login', async (ctx) => {
ctx.body = '登錄頁面';
})
app.use(router.routes());
app.use(router.allowedMethods());
/**
* router.allowedMethods() 作用:這是官方文檔的推薦用法,我們可以
* 看到 router.allowedMethods() 用在了路由匹配 router.routes()之后,
* 所以在當(dāng)所有路由中間件最后調(diào)用,此時根據(jù) ctx.status 設(shè)置 response 響應(yīng)頭
*/
app.listen(3000);