...
Another distinctive StringTemplate
language feature lacking in other engines is lazy-evaluation. StringTemplate
's attributes are lazily evaluated in the sense that referencing attribute "a
" does not actually invoke the data lookup mechanism until the template is asked to render itself to text. Lazy evaluation is surprising surprisingly useful in both the web and code generation worlds because such order decoupling allows code to set attributes when it is convenient or efficient not necessarily before a template that references those attributes is created. For example, a complicated web page may consist of many nested templates many of which reference $userName$
, but the value of userName
does not need to be set by the model until right before the entire page is rendered to text via ToString()
. You can build up the complicated page, setting attribute values in any convenient order.
...