v2.7.0

@sethkinast sethkinast released this Apr 17, 2015 · 72 commits to master since this release

Supported Runtimes

With this release we are dropping official support for:

  • Internet Explorer 7
  • Node.js 0.8

No explicit changes have been made to break Dust in these environments, but we will no longer run tests and may break them going forward.

Notable Changes

More flexible rendering

You can pass Dust body functions directly to dust.render and dust.stream, instead of the template name.

require(['lib/dust-core', 'views/index'], function(dust, index) {
  dust.render(index, context, function(err, out) { ... });
});

This means that you can also compile templates without having to name them-- just pass the compiled function directly to dust.render. You can decide if a function is eligible to be passed as a renderable by calling dust.isTemplateFn().

CommonJS templates

Dust can now compile templates into CommonJS modules. Set dust.config.cjs to true, or use the --cjs flag with dustc.

var dust = require('dustjs-linkedin'),
    index = require('views/index.js')(dust);

index.template; // contains the compiled template
index({ name: "Dust" }, function(err, out) { ... }); // use index to render or stream

Streams in context

You can include a ReadableStream directly in your Dust context and Dust will iterate over it like an array.

var resultStream = db.query("SELECT * FROM people").stream();

dust.renderSource("{#people}{firstName} {lastName}{/people}", { people: resultStream })
    .pipe(res);

As long as you stream the results instead of rendering, Dust will flush data from the Stream as it is output.

Caching

You can disable caching of templates (useful for development) by setting dust.config.cache = false. If caching is disabled, you must write a dust.onLoad function to tell Dust how to load partials, since it wouldn't be possible to load them in advance and cache them.

Errata

The exposed compiler options such as dust.optimizers are deprecated. They are now exposed under, e.g. dust.compiler.optimizers. In Dust 2.8.0 the old options will be removed.

dust.load, an undocumented but public function, has been made private. Consider using dust.onLoad to define special behavior to load a template.

Templates compiled with earlier Dust versions should be recompiled before using 2.7.0.