brio

View building blocks

Brio

Templated layout builders.

npm install brio

(Pretending that Javascript has multiline strings)

var brio = require('brio'), handlebars = require('handlebars');
 
var pages = brio(handlebars, {
base: `<!doctype html>
<html>
<head>
<title>{{page.title}}</title>
</head>
<body>
{{{body}}}
</body>
</html>`,
page: `---
layout: 'base'
---
<h1>{{page.title}}</h1>
<main>
{{{body}}}
</main>`,
site: {
home: `---
title: 'Home',
layout: 'page'
---
 
Welcome!`,
post: `---
title: 'Post'
layout: 'page'
---
 
<h2>{{post.title}}</h2>
<article>{{post.content}}</article>`
}
});
 
pages('site.home', {}); /*⇒ <!doctype html>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>Home</h1>
<main>
Welcome!
</main>
</body>
</html>
*/
 
pages('site.post', {post: {title: 'Hello world', content: 'Lorem ipsum dolor sit amet'}); /*⇒ <!doctype html>
<html>
<head>
<title>Post</title>
</head>
<body>
<h1>Post</h1>
<main>
<h2>Hello world</h2>
<article>Lorem ipsum dolor sit amet</article>
</main>
</body>
</html>
*/
 

Takes a templater, a tree of templates, a path to a template, some params and spits out a compiled string.

Are any curried function taking a template and some parameters and returning a string. Handlebars fits nicely, as does _.template.

MIT. © 2014 Matt Brennan.