1.1.5 • Published 7 years ago

express-simple-controllers v1.1.5

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago

express-simple-controllers

npm.io

Create super simple controllers for routing an express app.

How to use

First off, initialize the controllers

import initialize from "express-simple-controllers";
import express from "express";

const router = express.Router();

initialize(router);

Then create a controllers directory and add anything with an _controller.js suffix. e.g. home_controller.js. Anything with that suffix will be added as a controller.

If you need to change the controller directory...

initialize(router, { directory: "server/controllers" });

Basic

You can create controller methods in a few different ways.

const show = {
  method: "GET",
  route: "/home",
  handler(req, res, next) {
    res.render("home");
  }
};

export { show };

Handler types

const show = {
  method: "GET",
  route: "/home",
  handler: {
    json(req, res, next) {
      res.json({ home: "home" });
    }
    html(req, res, next) {
      res.render("home");
    }
  }
};

export { show };

Middleware and before

If you export a before function, it will run before every method in the file unless you pass a skipBefore: true.

const before = (req, res, next) => {
  req.something = "a thing";
  next();
}

const show = {
  method: "GET",
  route: "/home",
  handler(req, res, next) {
    const { something } = req;

    res.render("home", { something });
  }
};

const showNoBefore = {
  method: "GET",
  route: "/home",
  skipBefore: true,
  handler(req, res, next) {
    // ...
  }
};

export {
  before,
  show,
  showNoBefore,
};

You can also pass an array of of middleware.

const show = {
  method: "GET",
  route: "/home",
  middleware: [first, second(someOptions)],
  handler(req, res, next) {
    res.render("home");
  }
};

export { show };

CRUD routes

You can also create a simple crud controller by creating named functions in the exports...

// user_controller.js
const before = (req, res, next) => next();

// GET /user
const show = (req, res, next) => {};

// GET /users
const list = (req, res, next) => {};

// PUT /user
const update = (req, res, next) => {};

// POST /user
const create = (req, res, next) => {};

// DELETE /user
const delete = (req, res, next) => {};

export {
  show,
  list,
  update,
  create,
  delete
};

The prefix of the file sets the route, in the above case /user because the controller is named user_controller.js.

Build

Will build to the /dist directory.

npm run build

Running tests

npm run test
npm run test:ci # Runs in watch mode
1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago