express-hbs-segment

express-hbs-segment =================== [![Code Climate](https://codeclimate.com/github/MrBoolean/express-hbs-segment/badges/gpa.svg)](https://codeclimate.com/github/MrBoolean/express-hbs-segment) [![Test Coverage](https://codeclimate.com/github/MrBoolean

Usage no npm install needed!

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

README

express-hbs-segment

Code Climate Test Coverage Build Status Dependency Status npm

express-hbs-segment takes care of recurring elements (called segments or fragments) for your application. Sometimes, the express-hbs partial behaviour is not the best opportunity. Maybe the partial should load its own data or simply accept a bunch of configuration attributes. At this point express-hbs-segment is a good choice. The built-in example/ directory gives you a short instruction.

Install

NPM

npm i --save express-hbs-segment

Usage

var hbs = require('express-hbs');
var segment = require('express-hbs-segment');

segment.configure({
  cwd: process.cwd(),
  directories: ['app/segment/*', 'lib/segment/*'],
  handlebars: hbs
});
{{segment id="latest_news" limit=5 category=1337 title="Latest News"}}

Create a segment

Creating segments is really easy. Just add a folder (e.g. latest-news) and create a .hbs and .js file with the same name (in this example: latest-news) in it.

The segment controller must returns a bluebird Promise instance. The data passed to the resolve-function will be forwarded to the hbs template.

var Promise = require('bluebird');

module.exports = function latestNews(options) {
  return Promise.resolve({
    options: options
  });
};

The above shown example forwards the obtained options object to the view.

FAQ

Is there a reason why this modules depend on express-hbs?

Unfortunately, the module handlebars does not support an asynchronous helper workflow. However, express-hbs comes with a method called registerAsyncHelper which takes care of the above-mentoined process.