koa介绍 网址:koa.bootcss.com
koa是express原班人马打造的轻量、健壮、富有表现力的nodejs框架。目前koa有koa1和koa2两个版本;koa2依赖Node.js 7.6.0或者
更高版本;koa不在内核方法中绑定任何中间件,它仅仅是一个轻量级的函数库,几乎所有功能都必须通过第三方插件来实现。
koa安装
npm init -y 创建package.json
npm i koa -s 安装koa
npm i koa-router koa-views koa-static -S
执行顺序,洋葱模型
创建一个简单的koa服务器
// 创建服务器;
const Koa = require('koa');
const app = newKoa();
app.use(async ctx => {
ctx.body = 'hello hello';
});
app.listen(3000);
Koa 利用中间件 控制"上游",调用"下游“;
- koa是包含一组中间件函数的对象;可以将app.use里的函数理解成中间件
koa中间件middleware
// koa express 是nodejs的框架;轻量级;
// 创建服务器;
const Koa = require("koa");
let app = new Koa(); //Application
// 中间件;函数;
// ctx:context简写;(res和req);
let m1 = function(ctx,next){
console.log("m1start");
// throw new Error("some error...");
next(); //转交控制权给下一个中间件;m2();
console.log("m1end");
}
let m2 = function(ctx,next){
console.log("m2start");
next();
console.log("m2end");
}
app.use(m1);
app.use(m2);
app.use(async ctx=>{
//1. 异步处理: async await;
// let res = await new Promise(resolve=>{
// setTimeout(() => {
// resolve("结果");
// }, 1000);
// })
// console.log(res)
// console.log(ctx.req.url);
// 2. 获取get参数; ctx封装;
// console.log(ctx.request.query.age);
// ctx.res ==== res; ctx.req=== req;
// ctx.response koa封装的res ctx.request koa封装的req
// 3.别名;res输出; ctx.body(别名) 完整写法;ctx.response.body;
// 4.中间件执行顺序;
ctx.response.body = "hello world 你好";
})
// 错误处理中间件;
app.on("error",err=>{
console.log("??",err);
})
app.listen(3000);
const Koa = require("koa");
const app = new Koa();
app.use(ctx=>{
// 成功 {status:1,info:'成功'} 用数据做返还错误做法,不标准
// 失败 {status:0,info:'失败'} 没有充分利用浏览器特性
// ctx.status = 404;
ctx.status = 302; //临时重定向;
// ctx.set("location","http://www.baidu.com");
ctx.body = "hello";
});
app.listen(4000);
koa常用中间件介绍
一、koa-router
路由是引导匹配之意,是匹配url到相应处理程序的活动。
koa-router安装
npm i koa-router -S
Koa-router使用
ctx.request.body 请求.body
ctx.request.query 请求.查询 ?后参数可以不给
ctx.params.id 参数.id id为必须参数
二、koa-views
Koa-views用于加载html模板文件;
安装 koa-views
npm i koa-views -S
三、koa-static
koa-static 是用于加载静态资源的中间件,通过它可以加载css、js等静态资源;
安装 koa-static
npm i koa-static -S
使用koa-static
const Koa = require("koa");
const Router = require("koa-router");
const views = require("koa-views"); //加载模板(页面);
const static = require("koa-static");// 加载资源;
const newsData = require("./data/data.json");
let app = new Koa();
let router = new Router();
app.use(views(__dirname+"/views",{
extension:"pug"
}));
app.use(static(__dirname+"/static"));
router.get("/",async ctx=>{
ctx.body = "some thing..."
})
router.get("/index",async ctx=>{
// ctx.body = "some thing..."
await ctx.render("index",{
newsData
});
})
app.use(router.routes());
app.listen(4000);
四、koa-bodyparser
npm i koa-bodyparser -S
拿到koa post提交数据
五、md5
npm i md5 -S
用于加密
六、koa-server-http-proxy
npm i koa-server-http-proxy -S
koa路由 const koaServerHttpProxy = require("koa-server-http-proxy");