安裝指令是: npm install koa2
使用koa2 建立項目工程:javascript
1. koa2 (項目工程) 2. 進入項目工程: cd 進入您所建立的項目工程 3. npm install // 安裝項目依賴; 4. npm start // 啓動項目
async (異步)html
async function test (){ return 'Hello async' } const result = test() console.log(result)
await (等待)java
/** * 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同時使用:npm
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動態添加路由cookie
// 請求方式: http:// 域名/ user/123 router.get('/users/:aid',async(ctx)=>{ console,log(ctx.mparams)// {aid:"123"} //獲取動態路由的數據 ctx.body='商品頁面'; })
應用級中間件:session
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.路由中間件:app
router.get('/',(ctx,next)=>{ console.log(1) next(); }) router.get('/',(ctx)=>{ ctx.body='Hello koa' })
3.錯誤處理中間件:koa
1 app.use(async,(ctx,next)=>{ 2 next(); 3 if(ctx,status==404){ 4 ctx.sttaus=404; 5 ctx.body='錯誤頁面!' 6 } 7 })
第三放中間件
1 const static = require("koa-static") 2 const staticPath = './static'; 3 app.use(static{ 4 path.join(_dirname,staticPah) 5 }) 6 const bodyParser = require("koa-bodyparser"); 7 app.use(bodyParser) 8
koa-bodyparser 中間件:
安裝 koa-bodyParser 模塊的指令是: npm install --save koa-bodyParser
安裝koa-bodyparser 引入配置中間件
1 var koa = require('koa') 2 var bodparser = require('koa-bodyparser') 3 var app = new koa() 4 app.use(bodyparser()) 5 app.use(async ctx=>{ 6 ctx.body= ctx.request.body 7 }) 8
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
1 // 引入session 2 const session = requure('koa-session') 3 // 設置中間件 4 app.keys = ['some secret hurr']; 5 const CONFIG = { 6 key: 'koa:sess', //cookie key (default is koa:sess) 7 maxAge: 86400000, // cookie的過時時間 maxAge in ms (default is 1 days) 8 overwrite: true, //是否能夠overwrite (默認default true) 9 httpOnly: true, //cookie是否只有服務器端能夠訪問 httpOnly or not (default true) 10 signed: true, //簽名默認true 11 rolling: false, //在每次請求時強行設置cookie,這將重置cookie過時時間(默認:false) 12 renew: false, //(boolean) renew session when session is nearly expired, 13 }; 14 app.use(session(CONFIG, app)); 15 // 使用 16 設置值 ctx.session.username = '柚子小哥哥!'; 17 獲取值 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 {}