Maison > interface Web > js tutoriel > Explication détaillée des étapes de construction du projet Koa

Explication détaillée des étapes de construction du projet Koa

php中世界最好的语言
Libérer: 2018-04-28 14:06:40
original
2320 Les gens l'ont consulté

Cette fois, je vais vous apporter une explication détaillée des étapes de construction du projet Koa. Quelles sont les précautions pour construire le projet Koa. Voici des cas pratiques, jetons un coup d'œil.

Cet article présente le compte rendu détaillé du processus de construction du projet Koa et le partage avec tout le monde. Les détails sont les suivants :

Spring MVC plus MyBatis dans. Java est fondamentalement devenu le standard 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
Copier après la connexion
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

doit être utilisé avant statique, sinon il sera invalide.
app.use(require('koa-less')(dirname + '/public'))
Copier après la connexion

Créez styles.less dans le dossier stylesheets et importez tous les fichiers modulaires.

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).
@import 'foo.less';
@import 'bar.less';
Copier après la connexion

koa-session

Celui-ci doit être utilisé devant le routeur, sinon il sera invalide.
// 设置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));
Copier après la connexion

Utilisez essentiellement

, qui peut être utilisé comme un objet normal

// 赋值
ctx.session.statu = value
// 取值
ctx.session.statu
// 删除
ctx.session.statu = null
Copier après la connexion
koa-proxies

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
}))
Copier après la connexion
Contrôle de routage

Le développement se concentre principalement sur le contrôle de routage, y compris l'interface reposante et le

rendu de modèle

Obtention des paramètres (requête)

paramètre de requête (?param=a)

ctx.query.param
Copier après la connexion
paramètre de routage

(/:id)

paramètre POST ( JSON ou formulaire)
ctx.params.id
Copier après la connexion

ctx.request.body
Copier après la connexion
Demande de réponse (réponse)

Les données auxquelles le serveur répond au client

restful

Rendu de modèle
ctx.body = yourData
Copier après la connexion

Démarre à partir du répertoire des vues par défaut, aucun suffixe de fichier n'est autorisé

ctx.render('layout', yourData)
Copier après la connexion
Interception d'itinéraire

Rejetez la demande lorsque vous n'êtes pas connecté, comme ceci Renvoie 404

Cette opération sera incluse dans la route, comme "/a", "/b", etc. Elle doit être utilisé avant la sous-route, sinon elle sera invalide
const userAuth = (ctx, next) => {
  let isLogin = ctx.session.isLogin
  if(isLogin) return next()
}
router.use('/', userAuth)
Copier après la connexion

Je crois l'avoir lu Vous maîtrisez la méthode dans le cas de cet article Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le php. Site chinois !

Lecture recommandée :

Comment empêcher l'effacement des données après l'actualisation de la page Vuex


jQuery implémente l'effet de suspension du clic de souris

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal