The ACE Templating Plugin
-
Ace templates have full access to the revel.TemplateFuncs, any function defined in there can be used by the this engine
-
Ace files must be identified by using a
shebang
on the first line (preferred method) or changing the file extension to home.ace.html. By default the operation of revel assumes just a.html
extension for controller responses so it would make more sense to use the shebang -
Ace templates can be set to be case sensitive by setting
ace.tempate.caseinsensitive=false
, default is not case sensitive. If case sensitivity is off internal imports must be done using lower case -
All function registered in
revel.TemplateFuncs
are available for use inside the ace framework
Ace is a little different of a templating system, its output is a standard go template but there is no concept of template sets, instead you build a composite template using a base template and an inner template. The inner template can only contain items like :
= content main
h2 Inner Template - Main : {{.Msg}}
= content sub
h3 Inner Template - Sub : {{.Msg}}
The base template can contain items like
= doctype html
html lang=en
head
meta charset=utf-8
title Ace example
= css
h1 { color: blue; }
body
h1 Base Template : {{.Msg}}
#container.wrapper
= yield main
= yield sub
= include inc .Msg
= javascript
alert('{{.Msg}}');
You are allowed to include one inner template with the base template,
to do so in revel you can extend your controller from the ace controller
and call RenderAceTemplate(base ,inner string)
which will insert
the inner template using the outer template.
The ace engine requires that you explicitly set the template type on the
template itself by either using the shebang method on the first line
like #! ace
or having the file name like template.ace.html
either method will work.