啥是koa?那個美女好像也叫koa
koa2是現在最流行的基於node.js平台的web開發框架;koa 應用程式是乙個包含一組中介軟體函式的物件,它是按照類似堆疊的方式組織和執行的。
const koa = require('koa');
ctx.body = 'hello world';
}); log.error('server error', err)
});複製**
koa中介軟體以更傳統的方式級聯;那和express的中介軟體有什麼區別呢?
express和koa的區別
let express = require('express');
console.log(1);
await next();
console.log(2);
}); console.log(3);
await new promise((resolve, reject) => , 100);
})await next();
console.log(4);
});// 1 3 2 非同步 4
//遇到非同步不會等待 直接執行;打亂原來的洋蔥模型
複製**
let koa = require('koa');
console.log(1);
await next();
console.log(2)
}); console.log(3);
await new promise((resolve, reject) => , 100);
})await next();
console.log(4)
})// 1 3 非同步 4 2
複製**
koa使用中介軟體獲取請求體
const bodyparser = require('koa-bodyparser');
let body=ctx.request.body;//得到請求體
})複製**
使用中介軟體獲取包含檔案的請求體
const bodyparser = require('koa-better-body');
et convert = require('koa-convert'); // 將1.0的中介軟體 轉化成2.0中介軟體
uploaddir: path.join(__dirname, 'uploads'),
keepextensions: true
})));
let body=ctx.request.fields;//得到檔案資訊
})複製**
路由中介軟體//一級路由
const router = require('koa-router');
let user = new router();
user.get('/user', function (ctx) ).get('/query/:id', function (ctx) ).post('/user', function (ctx) ).get('/home', function (ctx) );
//多級路由
let user = new router();
user.get('/add', function (ctx) );
let article = new router();
article.get('/add', function (ctx) );
let router = new router();
router.use('/user', user.routes()); // /user/add
router.use('/article', article.routes()); ///article/add
複製**
koa自帶訪問cookie方法
讀取上下文請求中的cookie。
在上下文中寫入cookie。
ctx.cookies.set('name','sss',);
expires:cookie失效時間
複製**
session
let koa = require('koa');
let router = require('koa-router');
const session = require('koa-session');
router.get('/cross', (ctx,next)=> );
複製**
模板引擎
let koa = require('koa');
let router = require('koa-router');
let router = new router();
let views = require('koa-views');
map://識別html
}));
router.get('/',async (ctx,next)=>);
})複製**
靜態資源中介軟體
const static = require('koa-static')
ctx.body = 'not found'
})複製**
自己實現koa
// **的作用
function definegetter(property,name) )
}function definesetter(property,name) )
}// ctx.query = ctx.request.query
definegetter('request','query');
definegetter('response','body');
definesetter('response','body');
module.exports = proto;
//request
let request = ,
get path
() = require('url').parse(this.req.url);
return path;
},get query
() = require('url').parse(this.req.url,true);
return query;
} // .........
}module.exports = request;
//response
let response = ,
set body(value)
}module.exports = response;
複製**
從零開始node全棧學習筆記
計畫寫乙個node全棧的學習過程,不定期更新,因為不想給自己的定位只是前端開發,想多了解後端的學習。筆記最初是記在有道雲筆記的,現在分享出來,如有問題可以請各路大神指點。首先需要乙個伺服器。使用遠端登入工具 如x shell或secure 登入終端 ssh username ip輸入對應的密碼 安裝...
Python全棧(一),flask框架基礎
flask是一款非常流行的python web框架,出生於2010年,作者是armin ronacher,本來這個專案只是作者在愚人節的乙個玩笑,後來由於非常受歡迎,進而成為乙個正式的專案。flask自2010年發布第乙個版本以來,大受歡迎,深得開發者的喜愛,並且在多個公司已經得到了應用,flask...
全棧式框架的選擇 MEAN or MEANS
說明 個人部落格位址為edwardesire.com,歡迎前來品嚐。本部落格作為備份和引流 這兩個月一直在進行sails後端開發,其中遇到的問題不斷。放在研究使用者訪問控制矸例程上的時間太多,最後也沒用弄出什麼東西來。遂推薦降一級使用express框架,在進行資料庫的開發後,我們也等於正式使用上了m...