1.0.0 • Published 9 years ago

connect-locals v1.0.0

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

Locals

NPM version Build Status Coverage Status Dependencies

Connect/Express middleware which appends a locals object for scoped request variables.

Installation

$ npm install connect-locals

Usage

var locals = require( 'connect-locals' );

locals( request, response, next )

Connect/Express middleware which appends a locals object for scoped request variables.

var app = require( 'express' )();

app.use( before );
app.use( locals );
app.use( after );

function before( req, res, next ) {
	console.log( req.locals );
	// returns undefined

	next();
}

function after( req, res, next ) {
	// Append data to the `locals` object... 
	req.locals.data = 'beep';

	next();
}

Notes

  • If a request object already has a defined locals property, the middleware does not overwrite the existing value.
  • The intent of the locals object is similar to Express' res.locals, except the latter is primarily for populating view templates. This module helps avoid possible collisions and separate concerns.
  • To ensure that the locals object is available to all subsequent middleware, mount the middleware at the top of the middleware stack.

    var app = require( 'express' )();
    
    app.use( locals );
    app.use( logger );
    app.get( '/', main );
    app.get( '/foo', foo );
    app.get( '/bar', bar );

Examples

var express = require( 'express' ),
	request = require( 'request' ),
	locals = require( 'connect-locals' );

function db( req, res, next ) {
	process.nextTick( onTick );
	function onTick() {
		req.locals.data = 'beep';
		next();
	}
}

function transform( req, res, next ) {
	req.locals.data = req.locals.data.replace( /ee/, 'oo' );
	next();
}

function send( req, res, next ) {
	res.send( req.locals.data );
	next();
}

function onListen() {
	request({
		'method': 'GET',
		'uri': 'http://127.0.0.1:7331'
	}, onResponse );
}

function onResponse( err, res, body ) {
	if ( err ) {
		throw err;
	}
	console.log( 'Response status: %s.', res.statusCode );
	console.log( 'Response body: %s.', body );
	process.exit( 0 );
}

var app = express();
app.use( locals );
app.get( '/', db, transform, send );
app.listen( 7331, onListen );

To run the example code from the top-level application directory,

$ node ./examples/index.js

Tests

Unit

Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ make view-cov

License

MIT license.

Copyright

Copyright © 2015. Athan Reines.