Heim >Web-Frontend >js-Tutorial >Ausführliche Erläuterung von IWinter, einer Nodejs-Bibliothek für das Routing zum Controller

Ausführliche Erläuterung von IWinter, einer Nodejs-Bibliothek für das Routing zum Controller

小云云
小云云Original
2018-01-18 17:04:221446Durchsuche

In diesem Artikel wird hauptsächlich IWinter vorgestellt, eine Routing-to-Controller-Nodejs-Bibliothek. Der Herausgeber findet sie recht gut, daher werde ich sie jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.

IWinter ist eine Knotenbibliothek, die Routen in Controller umwandelt. Sie löst nur ein Problem: Benutzern das Schreiben von Routen auf elegantere Weise zu ermöglichen. Unterstützt für die Verwendung in Express und Koa.

Projektadresse: https://github.com/yvanwangl/iwinter

Einführung:

Ich lerne kürzlich den Umgang mit Typescript und habe vor, dies zu tun schreibe es in der Vergangenheit Das Blog-Management-Backend wurde komplett mit Typescript rekonstruiert. Bei der Rekonstruktion des Servercodes bin ich mit der Decorator-Funktion von Typescript in Berührung gekommen. Sie können einen Dekorator verwenden, um die Route zu umschließen, und dann können Sie die Route wie folgt schreiben:


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;

Da Sie Java verwenden werden, um den Code der Kontrollschicht zu schreiben (Spring (MVC) in Ihrem Code der Arbeitssteuerungsschicht), daher ist es sehr schön, solchen Code zu sehen. Darüber hinaus ist es im Vergleich zur vorherigen Methode zum Schreiben von Routen klarer und einfacher zu warten, sodass der ursprüngliche Code transformiert wurde. Nachdem ich es verwendet hatte, fand ich es sehr einfach zu verwenden und ich wollte, dass mehr Leute es verwenden, also wurde die Bibliothek IWinter geboren. IWinter kapselt verschiedene Dekorateur- oder Dekorator-Factory-Funktionen und stellt einige APIs zur Verfügung, die jeder verwenden kann. Verabschieden Sie sich von nun an davon, solche Routen zu schreiben ;)


//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']
    };
      ...

Wer ist für die Verwendung von IWinter geeignet:

  1. Nodejs Benutzer

  2. Typescript-Benutzer

  3. Express-/Koa-Benutzer

IWinter-Installation und -Nutzung


npm install --save iwinter


import IWinter from 'iwinter';

Anwendung in Koa:


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

Verwendung in 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();

Verwandte Empfehlungen:

Node.js-Design Muster verwendet Streams zur Codierung

Eine ausführliche Erklärung der Umgebungsvariablen Process.env in Node.js

Eine detaillierte Erklärung der Ereignisschleife in JS und Node.js

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von IWinter, einer Nodejs-Bibliothek für das Routing zum Controller. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn