Maison  >  Article  >  interface Web  >  Analyse détaillée de la construction du projet Koa

Analyse détaillée de la construction du projet Koa

php中世界最好的语言
php中世界最好的语言original
2018-06-08 14:12:531528parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn