Introduction
This package provides components to assist in rendering handlebars templates both on the server and client side.
What does it include?
Handlebars Middleware
This package provides a custom view engine that adds Handlebars rendering support to a fluid.express
instance.
For more details, see the handlebars view engine documentation.
Dispatcher Middleware
The dispatcher router turns the last part of a path (such as /dispatcher/foo
) into a template name (such as foo
),
and then attempts to find and render that template. The dispatcher router is configured using the same options as the
handlebars middleware, and supports the same kind of inheritance. For more information, see the dispatcher middleware
documentation.
Inline Middleware
The inline router reads all of the template content from one or more view directories and bundles this content up so that it can be used by the client-side renderer. The inline router is configured using the same options as the handlebars middleware, and supports the same kind of inheritance. For more information, see the inline middleware documentation.
renderer
Client-side The client side renderer provides the ability to insert rendered content into the DOM. It expects to either be
preconfigured with template content via its options, or to read the template content from the inline
router (see
above). For more details, see the renderer documentation.
Helper Functions
This package provides additional handlebars block helpers that can be used in your handlebars templates. For more details, see the helpers documentation.
initBlock
Handlebars block helper
The most powerful feature of the server-side template rendering is the initBlock
helper (this is not available on the
client side). This helper takes one or more grade names and generates client-side javascript that ultimately creates a
view component which has those grades.
Thus, in a simple bit of handlebars markup, you can create nearly any view component, as in:
{{{initBlock "your.grade" "your.other.grade"}}}
For more details on the initBlock
helper, see its documentation.
Testing This Module
In order to run the tests locally, you must have Chrome and ChromeDriver installed. You should then be able to run the following commands in order:
npm install
npm test