Template Class
yui3/src/template/js/template-base.js:18
Parent Module: template
Available since 3.8.0
Provides a generic API for using template engines such as Handlebars and
Y.Template.Micro
.
Examples
Using with Y.Template.Micro
(the default template engine):
YUI().use('template', function (Y) {
var micro = new Y.Template(),
html = micro.render('<%= data.message %>', {message: 'hello!'});
// ...
});
Using with Handlebars:
YUI().use('template-base', 'handlebars', function (Y) {
var handlebars = new Y.Template(Y.Handlebars),
html = handlebars.render('{{message}}', {message: 'hello!'});
// ...
});
Constructor
Template
-
[engine=Y.Template.Micro]
-
[defaults]
Parameters:
-
[engine=Y.Template.Micro]
Mixed optionalTemplate engine to use, such as
Y.Template.Micro
orY.Handlebars
. Defaults toY.Template.Micro
if not specified. -
[defaults]
Object optionalDefault options to use when instance methods are invoked.
Index
Methods
compile
-
text
-
[options]
Compiles a template with the current template engine and returns a compiled template function.
Parameters:
-
text
StringTemplate text to compile.
-
[options]
Object optionalOptions to pass along to the template engine. See template engine docs for options supported by each engine.
Returns:
Compiled template function.
get
-
templateName
Returns the registered template function, given the template name. If an
unregistered template is accessed, this will return undefined
.
Parameters:
-
templateName
StringThe template name.
Returns:
revivedTemplate The revived template function, or undefined
if it has not been registered.
precompile
-
text
-
[options]
Precompiles a template with the current template engine and returns a string containing JavaScript source code for the precompiled template.
Parameters:
-
text
StringTemplate text to compile.
-
[options]
Object optionalOptions to pass along to the template engine. See template engine docs for options supported by each engine.
Returns:
Source code for the precompiled template.
register
-
templateName
-
template
Registers a pre-compiled template into the central template registry with a
given template string, allowing that template to be called and rendered by
that name using the Y.Template.render()
static method.
For example, given the following simple Handlebars template, in foo.hbs
:
Parameters:
-
templateName
StringThe template name.
-
template
FunctionThe function that returns the rendered string. The function should take the following parameters. If a pre-compiled template does not accept these parameters, it is up to the developer to normalize it.
-
[data]
Object optionalData object to provide when rendering the template.
-
[options]
Object optionalOptions to pass along to the template engine. See template engine docs for options supported by each engine.
-
Returns:
revivedTemplate This is the same function as in template
,
and is done to maintain compatibility with the Y.Template#revive()
method.
Example:
<p>{{tagline}}</p>
It can be precompiled using the Handlebars CLI, and added into a YUI module
in the following way. Alternatively, locator
can be used to automate this
process for you:
YUI.add('templates-foo', function (Y) {
var engine = new Y.Template(Y.Handlebars),
precompiled;
precompiled = // Long precompiled template function here //
Y.Template.register('foo', engine.revive(precompiled));
}, '0.0.1', {requires: ['template-base', 'handlebars-base']});
See the Y.Template#render
method to see how a registered template is used.
render
-
templateName
-
[data]
-
[options]
Renders a template into a string, given the registered template name and data
to be interpolated. The template name must have been registered previously with
register()
.
Once the template has been registered and built into a YUI module, it can be listed as a dependency for any other YUI module. Continuing from the above example, the registered template can be used in the following way:
Parameters:
-
templateName
StringThe abstracted name to reference the template.
-
[data]
Object optionalThe data to be interpolated into the template.
-
[options]
Object optionalAny additional options to be passed into the template.
Returns:
output The rendered result.
Example:
YUI.add('bar', function (Y) {
var html = Y.Template.render('foo', {
tagline: '"bar" is now template language agnostic'
});
}, '0.0.1', {requires: ['template-base', 'templates-foo']});
The template can now be used without having to know which specific rendering engine generated it.
render
-
text
-
data
-
[options]
Compiles and renders a template with the current template engine in a single step, and returns the rendered result.
Parameters:
-
text
StringTemplate text to render.
-
data
ObjectData object to provide when rendering the template.
-
[options]
Object optionalOptions to pass along to the template engine. See template engine docs for options supported by each engine.
Returns:
Rendered result.
revive
-
precompiled
-
[options]
Revives a precompiled template function into an executable template function using the current template engine. The precompiled code must already have been evaluated; this method won't evaluate it for you.
Parameters:
-
precompiled
FunctionPrecompiled template function.
-
[options]
Object optionalOptions to pass along to the template engine. See template engine docs for options supported by each engine.
Returns:
Compiled template function.
Properties
_registry
Object
protected
static
Registry that maps template names to revived template functions.
defaults
Object
Default options.
engine
Mixed
Template engine class.