接着 Koa入门继续 传送门— Koa入门
我们监听的是3000端口 但是路径没有限制,所以输入以下路径都是OK的
http://localhost:3000/****
这样的话怎么处理 ?
按理说 我们想要每个路由对应不同的页面渲染
实现如下
// 导入koa,和koa 1.x不同,在koa2中,我们导入的是一个class,因此用大写的Koa表示:
const Koa = require('koa');
// 创建一个Koa对象表示web app本身:
const app = new Koa();
app.use(async (ctx, next) => {
const url = ctx.url;
ctx.response.type = 'text/html';
switch (url){
case '/':
ctx.response.body = '<h1>Hello, koa2!</h1>';
break;
case '/haha':
ctx.response.body = '<h1>haha!</h1>';
break;
case '/xixi':
ctx.response.body = '<h1>xixi!</h1>';
break;
}
await next(); // 调用下一个middleware
});
// 在端口3000监听:
app.listen(3000);
console.log('app started at port 3000...');
这样处理感觉会很笨重 所以我们还是需要做下集中处理的 当当当 koa-router 出现了
首先 安装依赖
npm install koa-router
package.json
{
"scripts": {
"start": "node app.js"
},
"dependencies": {
"koa": "^2.12.1",
"koa-router": "^9.0.1"
}
}
// 导入koa,和koa 1.x不同,在koa2中,我们导入的是一个class,因此用大写的Koa表示:
const Koa = require('koa');
// 创建一个Koa对象表示web app本身:
const app = new Koa();
// 注意require('koa-router')返回的是函数:
const route = require('koa-router');
const router = route()
app.use(async (ctx, next) => {
console.log(`Process ${
ctx.request.method} ${
ctx.request.url}...`);
await next();
});
// add url-route:
router.get('/', async (ctx, next) => {
ctx.response.body = '<h1>Index</h1>';
});
router.get('/:name', async (ctx, next) => {
var name = ctx.params.name;
ctx.response