vinyl-view
Version:
Extends vinyl with render and compile methods, and properties used for rendering templates.
186 lines (118 loc) • 4.76 kB
Markdown
# vinyl-view [](https://www.npmjs.com/package/vinyl-view) [](https://npmjs.org/package/vinyl-view) [](https://npmjs.org/package/vinyl-view) [](https://travis-ci.org/jonschlinkert/vinyl-view)
> Extends vinyl with render and compile methods, and properties used for rendering templates.
## Install
Install with [npm](https://www.npmjs.com/):
```sh
$ npm install --save vinyl-view
```
## Usage
Use the same way you would use a [vinyl](https://github.com/gulpjs/vinyl) file:
```js
var View = require('vinyl-view');
var view = new View({path: 'foo'});
```
## API
### [View](index.js#L26)
Create an instance of `View`. Optionally pass a default object to use.
**Params**
* `view` **{Object}**
**Example**
```js
var view = new View({
path: 'foo.html',
contents: new Buffer('...')
});
```
### [.compile](index.js#L57)
Synchronously compile a view.
**Params**
* `locals` **{Object}**: Optionally pass locals to the engine.
* `returns` **{Object}** `View`: instance, for chaining.
**Example**
```js
var view = page.compile();
view.fn({title: 'A'});
view.fn({title: 'B'});
view.fn({title: 'C'});
```
### [.renderSync](index.js#L75)
Synchronously render templates in `view.content`.
**Params**
* `locals` **{Object}**: Optionally pass locals to the engine.
* `returns` **{Object}** `View`: instance, for chaining.
**Example**
```js
var view = new View({content: 'This is <%= title %>'});
view.renderSync({title: 'Home'});
console.log(view.content);
```
### [.render](index.js#L101)
Asynchronously render templates in `view.content`.
**Params**
* `locals` **{Object}**: Context to use for rendering templates.
**Example**
```js
view.render({title: 'Home'}, function(err, res) {
//=> view object with rendered `content`
});
```
### [.context](index.js#L132)
Create a context object from `locals` and the `view.data` and `view.locals` objects. The `view.data` property is typically created from front-matter, and `view.locals` is used when a `new View()` is created.
This method be overridden either by defining a custom `view.options.context` function
to customize context for a view instance, or static [View.context](#view-context) function to customize
context for all view instances.
**Params**
* `locals` **{Object}**: Optionally pass a locals object to merge onto the context.
* `returns` **{Object}**: Returns the context object.
**Example**
```js
var page = new View({path: 'a/b/c.txt', locals: {a: 'b', c: 'd'}});
var ctx = page.context({a: 'z'});
console.log(ctx);
//=> {a: 'z', c: 'd'}
```
### [.isType](index.js#L148)
Returns true if the view is the given `viewType`. Returns `false` if no type is assigned. When used with vinyl-collections, types are assigned by their respective collections.
**Params**
* `type` **{String}**: (`renderable`, `partial`, `layout`)
**Example**
```js
var view = new View({path: 'a/b/c.txt', viewType: 'partial'})
view.isType('partial');
```
### [.View.context](index.js#L248)
Define a custom static `View.context` function to override default `.context` behavior. See the [context](#context) docs for more info.
**Params**
* `locals` **{Object}**
* `returns` **{Object}**
**Example**
```js
// custom context function
View.context = function(locals) {
// `this` is the view being rendered
return locals;
};
```
## About
### 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).
MIT
***
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.4.2, on February 08, 2017._