0.5.0 • Published 8 years ago

express-controller-middleware v0.5.0

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

Express Controller Middleware

This is a middleware to load all controllers.

NOTE: this is a deprecated system. You can use this express-common-router to instead.

Installation

$ npm install express-controller-middleware

Usage

First step:

Create two controllers:

  • HelloController.js
module.exports = function(req, res, next) {
  res.send("Hello Controller");
};
  • TestController.js
exports.index = function(req, res) {
  res.send("Hello Index");
};
exports.show = function(req, res) {
  res.send("Hello Show");
}

Second step:

Create a middleware.

  • controller-middleware.js
const path = require('path');
const ExpressControllerMiddleware = require('express-controller-middleware');

const controllerPath = path.join(__dirname, './controllers');
const middleware = new ExpressControllerMiddleware(controllerPath);

middleware.use('/hello', 'HelloController'); //Must use the same name with file name.
middleware.get('/test/index', 'TestController#index'); //Controller name and action name separated by '#'
middleware.get('/test/index', 'TestController#index'); //More method please refer to 'express'

module.exports = middleware;

Third step:

Using middleware in server.js

const express = require('express');
const controllerMiddleware = require('./js/controller-middleware');
const app = express();

app.use(controllerMiddleware);

app.listen(3000, '0.0.0.0', (err) => {
  if (err) {
    console.log(err);
    return;
  }
});

More Details

Set controller path

There are two ways to set controller path.

  • Pass the controller path as a parameter into constructor method.
const controllerPath = path.join(__dirname, './controllers');
const middleware = new ExpressControllerMiddleware(controllerPath);
  • Calling setPath method for ExpressControllerMiddleware class.
const middleware = new ExpressControllerMiddleware();
middleware.setPath(path.join(__dirname, './controllers'));

Set custom FileLoader.

  • Create a custom FileLoader like this:
function CustomFileLoader() {}

// Must have this method.
CustomFileLoader.prototype.loadControllerFiles = function(controllerPath) {
  ...
}

module.exports = CustomFileLoader;
  • Config CustomFileLoader into middleware config file.
const ExpressControllerMiddleware = require('express-controller-middleware');
const CustomFileLoader = require('./CustomFileLoader');

const middleware = new ExpressControllerMiddleware();
middleware.setFileLoader(new CustomFileLoader());

Set custom ControllerLoader.

  • Create a custom ControllerLoader like this:
function CustomControllerLoader() {}

// Must have this method.
CustomControllerLoader.prototype.loadController = function(controllerFile) {
  ...
}

module.exports = CustomControllerLoader;
  • Config CustomControllerLoader into middleware config file.
const ExpressControllerMiddleware = require('express-controller-middleware');
const CustomControllerLoader = require('./CustomControllerLoader');

const middleware = new ExpressControllerMiddleware();
middleware.setControllerLoader(new CustomControllerLoader());

Set custom ActionLoader.

  • Create a custom ActionLoader like this:
function CustomActionLoader() {}

// Must have this method.
CustomActionLoader.prototype.loadAction = function(controller, actionName) {
  ...
}

module.exports = CustomActionLoader;
  • Config CustomActionLoader into middleware.
const ExpressControllerMiddleware = require('express-controller-middleware');
const CustomActionLoader = require('./CustomActionLoader');

const middleware = new ExpressControllerMiddleware();
middleware.setActionLoader(new CustomActionLoader());

Config your routes.

This component support all methods which supported by express.

About the details of config route, please refer to here: Express Router

0.5.0

8 years ago

0.4.0

8 years ago

0.3.0

8 years ago

0.2.0

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago