express-controller-middleware

0.5.0 • Public • Published

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

Package Sidebar

Install

npm i express-controller-middleware

Weekly Downloads

5

Version

0.5.0

License

MIT

Last publish

Collaborators

  • mixspa