express-dual

express-dual ============

Usage no npm install needed!

<script type="module">
  import expressDual from 'https://cdn.skypack.dev/express-dual';
</script>

README

express-dual

Split your express logic into separate data-fetching/view-rendering functions

Installation

npm install --save express-dual

Use

...
const dual = require('express-dual')
const app = express()
app.get('/', dual()
    .data(function (req) {
        return { my: 'data' }
    })
    .view(function (req, res, data, next) {
        res.render('index', data)
    }))

When a request is made with the header Accept set to application/json, the middleware will respond with the data encoded as JSON, otherwise the middleware will call your view function.

API

dual([ dataCallback, [ viewCallback ] ]) : DualMiddleware

Create dual middleware

DualMiddleware.data(dataCallback) : DualMiddleware

Attach a data-fetching function to middleware

The dataCallback function may return data immediately, or return a promise. The signature of dataCallback is function (request) => Object|Promise

DualMiddleware.view(viewCallback) : DualMiddleware

Attach a view-rendering function to middleware

The signature of viewCallback is function (request, response, data, next)