1.6.0 • Published 3 years ago

midmare v1.6.0

Weekly downloads
2
License
ISC
Repository
github
Last release
3 years ago

npm version Build Status codecov.io

MIDMARE library

Minimalist library that routing functionality of program.

Installation

This is a Node.js module available through the npm registry.

Before installing, download and install Node.js. Node.js 0.10 or higher is required.

If this is a brand new project, make sure to create a package.json first with the npm init command.

Installation is done using the npm install command:

npm install midmare

Features

  • Robust routing
  • Focus on high performance

Using of it

That's really pretty simple. The same way as you use an "express.js" application, but without HTTP Layer.

const {default: mid, Router: { Router }} = require('midmare');

const app = mid();

/*
  You can create your own router
*/

const someRouter = new Router({});

someRouter.use((ctx, next) => {
  ctx.set('someRoutingData', 'Hello Mid!');
  next();
});

someRouter.process('/some-route-of-router', (ctx) => {
  ctx.send('/next-route');
});

/*
  You can use params in url
*/
someRouter.process('/model/:container/:id', ctx => {
 console.log(ctx.params);
});

/* 
  You can add `helper` functions and use them from `ctx`.
  Helper should be named function declaration - 
  `function nameOfFunction() { ... }`
*/
app.helper(function someHelperName(yourArg1, yourArg2) {
  console.log('Hello helper.', yourArg1, yourArg2);
} /*, second argument is binding of any context you want. To use `this` in function. */);


app
    .use(function(ctx, next) {
      // Two ways to set data to context.
      ctx.user = 'Hi MID.';
      ctx.set('user', 'Hi MID.');
      next();
    })
    .process('/', function(ctx) {
      console.log('CTX', ctx.get('data'));
      
      
      /* Sending to another path */
      ctx.send('/some/other/path');

      /*
        DO NOT USE `app.send` inside of route/middleware !!!!
      
        Be careful to use multiple sending in one route/ middleware, that can overload your app.
        And be careful with cyclic sending. App have protection from it.
      */
      

      if(youWantUseYourHelper) {
        ctx.someHelperName('yourArg1', 'yourArg2');
      }
    })
    // Adding router to chain
    .use(someRouter.routes());

app.init();

/*
  `init` method ignore creating a waiter(timeout) for your functionality.
  If you will create app with `withListen` option and run `init` or `listen`, your application will not be closed until
    you will call method `stop`.
*/

/* To send to app some data you can use method `send` */

app.send('/', 'Some data that you sending.');

/* 
    If you want send data to all middleware just use regexp patters,
    this library uses same matching path as express.js app.
 */

app.send('*', 'some data');


/* Send data to route with params */

app.send('/model/Game/145932157', { data: 123 });
1.6.0

3 years ago

1.5.2

3 years ago

1.5.1

4 years ago

1.5.0

4 years ago

1.4.19

4 years ago

1.4.18

4 years ago

1.4.17

4 years ago

1.4.11

4 years ago

1.4.10

4 years ago

1.4.13

4 years ago

1.4.12

4 years ago

1.4.15

4 years ago

1.4.14

4 years ago

1.4.16

4 years ago

1.4.9

4 years ago

1.4.8

4 years ago

1.4.7

4 years ago

1.4.6

4 years ago

1.4.5

4 years ago

1.4.4

4 years ago

1.4.3

4 years ago

1.4.2

4 years ago

1.4.1

4 years ago

1.4.0

4 years ago

1.2.8

4 years ago

1.2.7

4 years ago

1.2.6

4 years ago

1.3.2

4 years ago

1.3.1

4 years ago

1.3.0

4 years ago

1.2.5

4 years ago

1.2.2

4 years ago

1.2.0

4 years ago

1.2.1

4 years ago

1.1.11

4 years ago

1.1.10

4 years ago

1.1.9

4 years ago

1.1.8

4 years ago

1.1.7

4 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago