Maison > Article > interface Web > Analyse détaillée de la construction du projet Koa
Cette fois, je vais vous apporter une analyse détaillée de la construction du projet Koa et quelles sont les précautions à prendre pour la construction du projet Koa. Ce qui suit est un cas pratique, jetons un coup d'œil.
Spring MVC plus MyBatis en Java est fondamentalement devenu le standard pour Java Web. Correspondant à Node JS sont Koa, Express, Mongoose, Sequelize, etc. Koa peut être considéré comme une version améliorée d'Express dans une certaine mesure. De nombreux projets Node JS ont commencé à utiliser des bases de données non relationnelles (MongoDB). Sequelize prend en charge les bases de données non relationnelles (MSSQL, MYSQL, SQLLite).
Construction du projet Koa
cnpm install -g koa-generator // 这里一定要用koa2 koa2 /foo
Introduction au middleware commun Koa
L'application générée par koa-generator contient déjà middleware couramment utilisé Middleware, je ne parle ici que de ceux qui n'y sont pas utilisés.
koa-less
app.use(require('koa-less')(__dirname + '/public'))
doit être utilisé avant statique, sinon il sera invalide.
Créez styles.less dans le dossier stylesheets et importez tous les fichiers modulaires.
@import 'foo.less'; @import 'bar.less';
De cette façon, tous les styles seront compilés dans un style.css. Faites simplement référence à style.css dans le modèle (carlin).
koa-session
// 设置app keys,session会根据这个进行加密 app.keys = ['some secret hurr']; // 配置session config const CONFIG = { key: 'bougie:session', /** (string) cookie key (default is koa:sess) */ maxAge: 1000 * 60 * 60 * 24 * 7, overwrite: true, /** (boolean) can overwrite or not (default true) */ httpOnly: true, /** (boolean) httpOnly or not (default true) */ signed: true, /** (boolean) signed or not (default true) */ rolling: true, /** (boolean) Force a session identifier cookie to be set on every response. The expiration is reset to the original maxAge, resetting the expiration countdown. (default is false) */ renew: false, /** (boolean) renew session when session is nearly expired, so we can always keep user logged in. (default is false)*/ }; // 应用中间件 app.use(session(CONFIG, app));
Celui-ci doit être utilisé devant le routeur, sinon il sera invalide.
Basiquement utilisé, peut être utilisé comme un objet ordinaire
// 赋值 ctx.session.statu = value // 取值 ctx.session.statu // 删除 ctx.session.statu = null
koa-proxies
Utilisé pour la configuration du proxy
const proxy = require('koa-proxies') app.use(proxy('/octocat', { target: 'https://api.github.com/users', changeOrigin: true, agent: new httpsProxyAgent('http://1.2.3.4:88'), rewrite: path => path.replace(/^\/octocat(\/|\/\w+)?$/, '/vagusx'), logs: true }))
Contrôle de routage
Le développement se concentre principalement sur le contrôle de routage, y compris l'interface reposante et le rendu des modèles
Obtenir les paramètres (requête)
Paramètres de requête ( ? param=a)
ctx.query.param
Paramètre d'itinéraire (/:id)
ctx.params.id
Paramètre POST (JSON ou Form)
ctx.request.body
Demande réponse (réponse)
Les données auxquelles le serveur répond au client
restful
ctx.body = yourData
Rendu du modèle
Démarre à partir du répertoire des vues par défaut, aucun ajout n'est autorisé Suffixe de fichier
ctx.render('layout', yourData)
Interception d'itinéraire
Rejeter la demande lorsque vous n'êtes pas connecté, ce qui renverra 404
const userAuth = (ctx, next) => { let isLogin = ctx.session.isLogin if(isLogin) return next() } router.use('/', userAuth)
Cette opération sera incluse dans le routage, comme "/a", "/b", etc., doit être utilisée avant la sous-route, sinon elle sera invalide
Je crois vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres sujets connexes sur l'article du site Web php chinois !
Lecture recommandée :
Quelles sont les instructions de parcours de boucle dans vue
Deux méthodes pour implémenter la fonction pop-up
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!