La différence entre koa framework et express
express:
contient un cadre d'application complet avec des fonctions telles que le routage et les modèles, et prend beaucoup de place.
koa: Le
module Koa est un noyau middleware avec une plus grande modularité, une faible empreinte mémoire et une exécution rapide
Construire un framework express de 0 à 1
- Initialiser pakage.json
npm init
- Dépendances d'installation
Collez le code suivant dans pakage.json et exécutez npm install
"koa": "^2.13.1",
"koa-bodyparser": "^4.3.0",
"koa-onerror": "^4.1.0",
"koa-router": "^10.0.0",
"koa-static": "^5.0.0"
- Nouveau app.js
const Koa = require('koa')//引入koa中间件
const app = new Koa()
const onerror = require('koa-onerror'); //异常记录
const fs = require('fs');
//设置路由中间件
app.use(async (ctx, next) => {
await next()
});
//处理post方法接收到的数据
app.use(require('koa-bodyparser')());
//异常处理
onerror(app);
// 建立路由文件
const index = require('./router/index')
app.use(index.routes(), index.allowedMethods());
//设置静态目录
app.use(require('koa-static')(__dirname + '/public'));
// 异常处理
app.on('error', (err, ctx) => {
ctx.res.writeHead(200,{
'content-Type':'application/json'
});
ctx.res.end(JSON.stringify(err));
});
app.listen(3001);
- Créer un nouveau dossier d'itinéraire dans le répertoire racine
const koaRouter = require('koa-router');
const router = koaRouter();
//处理get请求
router.get('/oindex', async (ctx, next) => {
let code="222"
let msg="成功"
let data={
name:'111',status:"成功"}
ctx.body={
code,
msg,
data
}
});
//处理post请求
router.post('/index', async (ctx, next) => {
let code="222"
let msg="成功"
let data={
name:'111',status:"成功"}
ctx.body=ctx
//返回异常
// const error = new Error()
// error.code = 10000
// error.msg = '无此用户'
// throw(error);
});
module.exports = router
- Créez un nouveau dossier veiw et template file index.html sous veiw dans le répertoire racine
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>123</title>
</head>
<body>
<p>hello</p>
</body>
</html>
- Table des matières finale Le
cadre simple est terminé! Post-connexion / traitement de l'en-tête de demande / retour au format unifié / lien de base de données / traitement du mécanisme de connexion
Utilisez le générateur de koa pour construire rapidement
npm installer koa-generateur -g
nom du projet koa
Succès! Installez simplement la dépendance et exécutez-la.
Faites attention à
la configuration app.js créée avec le framework (on dit qu'il s'agit d'une version mise à niveau)
//中间件配置时app.js
app.use(function *(next){
var start = new Date;
yield next;
var ms = new Date - start;
console.log('%s %s - %s', this.method, this.url, ms);
});
//使用时 router中
router.get('/', function *(next) {
this.body = 'this is a users response!';
});
La configuration de la requête en ligne est essentiellement
//中间件配置时app.js
app.use(async (ctx, next) => {
await next()
});
//使用时 router中
router.post('/index', async (ctx, next) => {
ctx.body=ctx
})
Après une longue vérification, la partie interface ne sera pas traitée. Plus tard, on constate que dans le framework il s'agit de la
configuration du framework ctx . La modification est changée en:
//中间件配置时app.js
app.use(function *(next){
yield next;
});
//使用时 router中
router.get('/', function *(next) {
this.body = 'this is a users response!';
});
À propos de CTX
https://koa.bootcss.com/
https://blog.csdn.net/weixin_43392420/article/details/85676384 Ajouter une description du lien