Maison  >  Article  >  interface Web  >  Explication détaillée d'IWinter, une bibliothèque Nodejs de routage vers le contrôleur

Explication détaillée d'IWinter, une bibliothèque Nodejs de routage vers le contrôleur

小云云
小云云original
2018-01-18 17:04:221403parcourir

Cet article présente principalement IWinter, une bibliothèque Nodejs de routage vers contrôleur. L'éditeur la trouve plutôt bonne, je vais donc la partager avec vous maintenant et la donner comme référence. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

IWinter est une bibliothèque de nœuds qui convertit les routes en contrôleurs. Elle ne résout qu'un seul problème : permettre aux utilisateurs d'écrire des routes de manière plus élégante. Pris en charge pour une utilisation dans Express et Koa.

Adresse du projet : https://github.com/yvanwangl/iwinter

Introduction :

J'apprends à utiliser Typescript récemment et je prévois de le faire écrire dans le passé Le backend de gestion du blog a été entièrement reconstruit à l'aide de Typescript. Lors de la reconstruction du code du serveur, je suis entré en contact avec la fonction décorateur de Typescript. Vous pouvez utiliser un décorateur pour envelopper l'itinéraire, puis écrire l'itinéraire comme ceci :


import {Path, GET, POST, PathParam, BodyParam} from 'iwinter';

@Path('/api/orders')
class OrdersController {

  @GET
  @Path('/:name/:id', (ctx, next)=> ~~ctx.params.id > 20)
    getAllOrders(@PathParam('id') id: number, @PathParam('name') name: string){
    return [{
        id: id, name, content: 'test', author: 'test', comments: []
      }];
  }

  @POST
  @Path('/add')
  addPost(@BodyParam('order') order: object){
    return order;
  }
}

export default OrdersController;

Puisque vous utiliserez Java pour écrire le code de la couche de contrôle (Spring MVC) dans le code de votre couche de contrôle de travail), c'est donc si gentil de voir un tel code. De plus, par rapport à la manière précédente d’écrire les itinéraires, elle est plus claire et plus facile à maintenir, le code original a donc été transformé. Après l'avoir utilisé, je l'ai trouvé très facile à utiliser et je voulais que davantage de personnes l'utilisent, c'est pourquoi la bibliothèque IWinter est née. IWinter encapsule diverses fonctions de décorateurs ou d'usine de décorateurs et expose certaines API que tout le monde peut utiliser. Dites adieu à l'écriture d'itinéraires comme celui-ci à partir de maintenant ;)


//app.js
...
let users = require('./routes/users');
let orders = require('./routes/orders');

app.use('/api/users', users);
app.use('/api/orders', orders);
...

//routers/orders.js
...
router.route('/')
  .get(function (req, res, next) {
    let {page, timeRange, customerId, orderNumber} = req.query;
    let limit = constants.PAGE_SIZE;
    let skip = (page - 1) * limit;
    let currentUser = global[Symbol.for('currentUser')];
    let queryCondition = {
      userId: currentUser['_id']
    };
      ...

Qui est apte à utiliser IWinter :

  1. Nodejs utilisateurs

  2. Utilisateurs Typescript

  3. Utilisateurs Express / Koa

Installation et utilisation hivernale


npm install --save iwinter


import IWinter from 'iwinter';

Comment utiliser en Koa :


import * as Router from 'koa-router';
...
app.use(new IWinter({
    engine: 'koa',
  router: new Router(),
  dir: path.join(__dirname, 'controller')
}).controller());
...

Comment utiliser dans Express :


import * as express from 'express';
let app = express();
let router = express.Router();
...
new IWinter({
  engine: 'express',
  router: app,
  dir: path.join(__dirname, 'controller'),
    prefix: ''
}).controller();

Recommandations associées :

Conception Node.js le modèle utilise des flux pour l'encodage

Une explication détaillée de la variable d'environnement process.env dans Node.js

Une explication détaillée de la boucle d'événement en JS et Node.js

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