1.koa2路由安装
npm install koa-router
2.引入路由模块
const router = require('koa-router')();
2.挂载路由实例
app.use(router.routes());app.use(router.allowedMethods());
3.编写路由
router.get('/ziye', function (ctx, next) {ctx.body="Hello ziye";});
4.完整案例
const Koa = require('koa');const router = require('koa-router')(); //在koa2引入之后,因为koa2要使用const app = new Koa();//常用请求动作//get方式router.get('/mians/:id', function (ctx, next) { //路由编写在挂载路由之前ctx.body="Hello koa";});//post方式router.post('/mians', function (ctx, next) {ctx.body="Hello koa";});app.use(router.routes()); //路由挂载app.use(router.allowedMethods());app.listen(3000);
5.router.get()中的请求上下文ctx,跟他原来ctx的基本一致,只是做了一层封装更加友好和使用方便
6.在学习上下文ctx的时候,没有发现可以接收post的对象,get用了ctx.query,可以接收到并方便处理,但是post没有,为此借用一个别人写好的post处理模块或者原生node.req处理,我这里选择前者。
7.安装koa-bodyparser 一个post接收模块
npm install koa-bodyparser
8.引入模块
var postbody = require('koa-bodyparser');
9.挂载接收
app.use(postbody());
10.完整案例
const Koa = require('koa');const router = require('koa-router')();const postbody = require('koa-bodyparser'); //引入,注意位置const app = new Koa();app.use(postbody()); //实例后立即挂载//post方式router.post('/mians', function (ctx, next) {ctx.body=ctx.request.body; //在ctx.request.body中拿到post的数据,不能用ctx.body.试过了});app.use(router.routes()); //路由挂载app.use(router.allowedMethods());app.listen(3000);
11.到此已经解决了常用的数据之间的交互,确实是拿到了数据,但是一些资源访问在未设置之前koa2是不能访问的,好比你已经知道了你女朋友的图片是保存在一个叫www.fehome.wang/public/girl.png,但是你复制这个链接,往浏览器地址栏访问,却发现访问不了,而事实上确实是girl.png存在的,所以要解决这个问题。
12.安装 koa-static 解析静态资源的模块
npm install koa-static
13.引入模块
const static = require('koa-static');
14.挂载模块并解析
app.use(static('./public'))//这种挂载会直接将域名作为根,相当于将public文件夹作为根地址访问//所以要按如下方式才能访问到public里面的girl.png//http://localhost:3000/girl.png//但是很多时候需要区分文件地址或者说路由,上面的那种方式很明显存在一些不好的地方,//访问资源路径的文件安排和拓展都不很好//推荐如下方式:public为资源文件夹名app.use(static( __dirname,'./public'))//按如下方式访问//http://localhost:3000/public/girl.png//和明显推荐的方式优//比如在添加一个文件夹logoM,再挂载一次app.use(static( __dirname,'./logo'))//按如下方式访问//http://localhost:3000/logo/girl.png//两次挂载都能存在,解决区分文件夹问题
15.完整案例
const Koa = require('koa');const router = require('koa-router')();const postbody = require('koa-bodyparser');const static = require('koa-static');const app = new Koa();app.use(postbody());app.use(static( __dirname,'./public'))app.use(static( __dirname,'./logo'))app.use(static('./public'))app.listen(3000);
