LorenLiu 2020-03-28
安装指令是: npm install koa2
使用koa2 创建项目工程:
1. koa2 (项目工程) 2. 进入项目工程: cd 进入您所创建的项目工程 3. npm install // 安装项目依赖; 4. npm start // 启动项目
async (异步)
async function test (){ return ‘Hello async‘ } const result = test() console.log(result)
await (等待)
? /** * await 等待async方法执完毕; * 注释: await 必须在async方法中可以使用因为await访问本身就会造成程序堵塞: **/ function getDate(){ return ‘xixihehe‘; } async function testAsync(){ return "Hello async" } async function test(){ const va = await getDate() const vb = await testAsync() console.log(va, vb) } test();
await 和 async同时使用:
function Date (){ return new Promise (resolve=>{ setTimeoit(()=>resolve(‘log_time_value‘),10000) }) } async function test(){ const v = await Date() console.log(v) } test()
koa2 使用路由必须要安装模块:
// 安装路由的命令提示框的指令是: npm install --save koa-router //================================================== const koa = require("koa") //引入路由 const router = require("koa-router") const app = new Date() router.get(‘/‘,(ctx,next)=>{ ctx.body=‘Hello koa‘ }) router.get(‘/news‘,(cty,next)=>{ cty.body=‘新路由‘ }) //启动路由; app.use(router.routes()) //作用: 可以看到router,allowedMethods()用在了路由匹配router.routeres()之后,所以在但所有路由中间最后调用,此时根据ctx,status,设置,response 相应头 app.use(router.allowedMethods()) app.listen(3000,(err)=>{ if(!err){ console.log("SERVER CREATE SCCESS! ") } })
get 路由传值:
const koa = require("koa") const Router = require("koa-router") const app = new koa() const router = new router() router.get(‘/‘,(ctx,next)=>{ ctx.bocy =‘Hellp koa‘ }) router.get(‘/users‘,(ctx,next)=>{ let url = ctx.url; //从requset中获取get请求 let req_query = request.query let req_quertString = request.queryString; //从上下文直接获取 let ctx_query = ctx.query; let ctx_queryString = ctx.queryString; crx.body={ url, req.query, req_queryString, ctx.query, ctx.queryString, } }) app.use(router.routes()) app.use(router.allowedMethods()) app.listen(3000,(err)=>{ if(!err){ console.log("SERVER CREATE SCCESS! ") } })
koa动态添加路由
// 请求方式: http:// 域名/ user/123 router.get(‘/users/:aid‘,async(ctx)=>{ console,log(ctx.mparams)// {aid:"123"} //获取动态路由的数据 ctx.body=‘商品页面‘; })
应用级中间件:
const koa = require(‘koa‘) const Router = require(‘koa-router‘) const app = new koa(); const router = new Router() app.use(async(ctx,next)=>{ console.log(new Date()) awaait next() }) router.get(‘/‘,(ctx,next)=>{ ctx.body=‘Hello koa‘ }) router.get("/users",(ctx,next)=>{ ctx.body=‘路由‘ }) app.use(router.routes()) app.use(router.allowedMethods()) app.listen(3000,(err)=>{ if(!err){ console.log("SERVER CREATE SCCESS! ") } })
2.路由中间件:
router.get(‘/‘,(ctx,next)=>{ console.log(1) next(); }) router.get(‘/‘,(ctx)=>{ ctx.body=‘Hello koa‘ })
3.错误处理中间件:
app.use(async,(ctx,next)=>{ next(); if(ctx,status==404){ ctx.sttaus=404; ctx.body=‘错误页面!‘ } })
第三放中间件
const static = require("koa-static") const staticPath = ‘./static‘; app.use(static{ path.join(_dirname,staticPah) }) const bodyParser = require("koa-bodyparser"); app.use(bodyParser)
koa-bodyparser 中间件:
安装 koa-bodyParser 模块的指令是: npm install --save koa-bodyParser
安装koa-bodyparser 引入配置中间件
var koa = require(‘koa‘) var bodparser = require(‘koa-bodyparser‘) var app = new koa() app.use(bodyparser()) app.use(async ctx=>{ ctx.body= ctx.request.body })
koa-static 静态资源 中间件
安装 koa-static的指令是:
npm install --save koa-static
引入配置文件:
const static = require(‘koa-static‘) app.use(static(path.join(_dirname).‘public‘))?
session 和 cookie 的区别:
session是一种记录客户状态的机制,和cookie不同发是,cookie 是保存在客户端的浏览器中,而 session是保存在服务器上的,
安装指令是:
npm install koa-session --save
// 引入session const session = requure(‘koa-session‘) // 设置中间件 app.keys = [‘some secret hurr‘]; const CONFIG = { key: ‘koa:sess‘, //cookie key (default is koa:sess) maxAge: 86400000, // cookie的过期时间 maxAge in ms (default is 1 days) overwrite: true, //是否可以overwrite (默认default true) httpOnly: true, //cookie是否只有服务器端可以访问 httpOnly or not (default true) signed: true, //签名默认true rolling: false, //在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false) renew: false, //(boolean) renew session when session is nearly expired, }; app.use(session(CONFIG, app)); // 使用 设置值 ctx.session.username = ‘柚子小哥哥!‘; 获取值 ctx.session.username
安装 koa-views 和 ejs
安装 koa-views :
npm install --save koa-views
安装ejs :
npm install ejs --save
引入koa-views 胚珠中间件
const views = require(‘koa-views‘) app.use(views(‘views‘,{map:{html:‘ejs‘}}))
使用ejs
router.get(‘/add‘,async(ctx){ let title = ‘hello koa2‘ await ctx.render(index‘,{ title {}