base-routes
Version:
Plugin for adding routes support to your `base` application. Requires templates support to work.
225 lines (146 loc) • 6.35 kB
Markdown
# base-routes [](https://www.npmjs.com/package/base-routes) [](https://npmjs.org/package/base-routes) [](https://npmjs.org/package/base-routes) [](https://travis-ci.org/node-base/base-routes)
> Plugin for adding routes support to your `base` application. Requires templates support to work.
- [Install](#install)
- [Usage](#usage)
- [API](#api)
- [About](#about)
_(TOC generated by [verb](https://github.com/verbose/verb) using [markdown-toc](https://github.com/jonschlinkert/markdown-toc))_
## Install
Install with [npm](https://www.npmjs.com/):
```sh
$ npm install --save base-routes
```
## Usage
Register the plugin with your [base](https://github.com/node-base/base) application.
```js
var routes = require('base-routes');
var Base = require('base-app');
var app = new Base();
app.use(routes());
```
## API
### [.Router](index.js#L23)
The `Router` and `Route` classes are on the `app` instance, in case they need to be accessed directly.
**Example**
```js
var router = new app.Router();
var route = new app.Route();
```
### [.handle](index.js#L54)
Handle middleware `method` for the given `file`.
**Params**
* `methodName` **{String}**: Name of the router method to handle.
* `file` **{Object}**: View object
* `next` **{Function}**: Callback function
* `returns` **{undefined}**
**Example**
```js
app.handle('methodName', file, next);
```
### [.handleOnce](index.js#L114)
Run the given middleware handler only if the file has not already been handled by `method`.
**Params**
* `method` **{Object}**: The name of the handler method to call.
* `file` **{Object}**
* `returns` **{undefined}**
**Example**
```js
app.handleOnce(method, file, callback);
// example
app.handleOnce('onLoad', file, callback);
```
### [.route](index.js#L200)
Create a new Route for the given path. Each route contains a separate middleware stack. See the [en-route](https://github.com/jonschlinkert/en-route) API documentation for details on adding handlers and middleware to routes.
**Params**
* `path` **{String}**
* `returns` **{Object}**: Returns the instance for chaining.
**Example**
```js
app.create('posts');
app.route(/blog/)
.all(function(file, next) {
// do something with file
next();
});
app.post('whatever', {path: 'blog/foo.bar', content: 'bar baz'});
```
### [.param](index.js#L228)
Add callback triggers to route parameters, where `name` is the name of the parameter and `fn` is the callback function.
**Params**
* `name` **{String}**
* `fn` **{Function}**
* `returns` **{Object}**: Returns the instance for chaining.
**Example**
```js
app.param('title', function(view, next, title) {
//=> title === 'foo.js'
next();
});
app.onLoad('/blog/:title', function(view, next) {
//=> view.path === '/blog/foo.js'
next();
});
```
### [.all](index.js#L252)
Special route method that works just like the `router.METHOD()` methods, except that it matches all verbs.
**Params**
* `path` **{String}**
* `callback` **{Function}**
* `returns` **{Object}** `this`: for chaining
**Example**
```js
app.all(/\.hbs$/, function(view, next) {
// do stuff to view
next();
});
```
### [.handler](index.js#L274)
Add a router handler method to the instance. Interchangeable with the [handlers](#handlers) method.
**Params**
* `method` **{String}**: Name of the handler method to define.
* `returns` **{Object}**: Returns the instance for chaining
**Example**
```js
app.handler('onFoo');
// or
app.handler(['onFoo', 'onBar']);
```
### [.handlers](index.js#L293)
Add one or more router handler methods to the instance.
**Params**
* `methods` **{Array|String}**: One or more method names to define.
* `returns` **{Object}**: Returns the instance for chaining
**Example**
```js
app.handlers(['onFoo', 'onBar', 'onBaz']);
// or
app.handlers('onFoo');
```
## About
### Related projects
You might also be interested in these projects:
* [base](https://www.npmjs.com/package/base): Framework for rapidly creating high quality node.js applications, using plugins like building blocks | [homepage](https://github.com/node-base/base "Framework for rapidly creating high quality node.js applications, using plugins like building blocks")
* [en-route](https://www.npmjs.com/package/en-route): Routing for static site generators, build systems and task runners, heavily based on express.js routes… [more](https://github.com/jonschlinkert/en-route) | [homepage](https://github.com/jonschlinkert/en-route "Routing for static site generators, build systems and task runners, heavily based on express.js routes but works with file objects. Used by Assemble, Verb, and Template.")
* [gulp-routes](https://www.npmjs.com/package/gulp-routes): Add middleware to run for specified routes in your gulp pipeline. | [homepage](https://github.com/assemble/gulp-routes "Add middleware to run for specified routes in your gulp pipeline.")
### Contributing
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
### Building docs
_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
To generate the readme, run the following command:
```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```
### Running tests
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
```sh
$ npm install && npm test
```
### Author
**Jon Schlinkert**
* [github/jonschlinkert](https://github.com/jonschlinkert)
* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
### License
Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT License](LICENSE).
***
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on August 07, 2017._