This is a middleware to load all controllers.
NOTE: this is a deprecated system. You can use this express-common-router to instead.
$ npm install express-controller-middleware
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");}Create a middleware.
- controller-middleware.js
constpath=require('path');constExpressControllerMiddleware=require('express-controller-middleware');constcontrollerPath=path.join(__dirname,'./controllers');constmiddleware=newExpressControllerMiddleware(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;Using middleware in server.js
constexpress=require('express');constcontrollerMiddleware=require('./js/controller-middleware');constapp=express();app.use(controllerMiddleware);app.listen(3000,'0.0.0.0',(err)=>{if(err){console.log(err);return;}});There are two ways to set controller path.
- Pass the controller path as a parameter into constructor method.
constcontrollerPath=path.join(__dirname,'./controllers');constmiddleware=newExpressControllerMiddleware(controllerPath);- Calling
setPathmethod for ExpressControllerMiddleware class.
constmiddleware=newExpressControllerMiddleware();middleware.setPath(path.join(__dirname,'./controllers'));- Create a custom FileLoader like this:
functionCustomFileLoader(){}// Must have this method.CustomFileLoader.prototype.loadControllerFiles=function(controllerPath){
...
}module.exports=CustomFileLoader;- Config CustomFileLoader into middleware config file.
constExpressControllerMiddleware=require('express-controller-middleware');constCustomFileLoader=require('./CustomFileLoader');constmiddleware=newExpressControllerMiddleware();middleware.setFileLoader(newCustomFileLoader());- Create a custom ControllerLoader like this:
functionCustomControllerLoader(){}// Must have this method.CustomControllerLoader.prototype.loadController=function(controllerFile){
...
}module.exports=CustomControllerLoader;- Config CustomControllerLoader into middleware config file.
constExpressControllerMiddleware=require('express-controller-middleware');constCustomControllerLoader=require('./CustomControllerLoader');constmiddleware=newExpressControllerMiddleware();middleware.setControllerLoader(newCustomControllerLoader());- Create a custom ActionLoader like this:
functionCustomActionLoader(){}// Must have this method.CustomActionLoader.prototype.loadAction=function(controller,actionName){
...
}module.exports=CustomActionLoader;- Config CustomActionLoader into middleware.
constExpressControllerMiddleware=require('express-controller-middleware');constCustomActionLoader=require('./CustomActionLoader');constmiddleware=newExpressControllerMiddleware();middleware.setActionLoader(newCustomActionLoader());This component support all methods which supported by express.
About the details of config route, please refer to here: Express Router