DojoX DTL 是 DTL(Django Template Language)的 Dojo 实现版本。Neil Roberts 将 DTL 移植到 DojoX 中,并在 DTL 只支持文本基础上增加了对 HTML 元素的支持。DojoX DTL 完全实现了对 DTL 语法的支持,已有的 Django 模板可以很容易地移植到 DojoX DTL。
DojoX DTL 包括文本和 HTML 两个实现,构造函数分别为 dojox.dtl.Template 和 dojox.dtl.HtmlTemplate。这两个构造函数都可以接受一个字符串或 URL 作为参数,HTMLTemplate 也可以传入一个 DOM 节点作为参数。
Template 只适用于文本,不能用它来操纵 DOM 节点。但是我们可以用它来产生文本,然后将生成的文本作为某个 DOM 节点的 innerHTML。
HTMLTemplate 是 Template 的扩展,这就是说 HTMLTemplate 不仅支持所有的 Template 操作,还支持直接对 DOM 节点的操作。例如一个节点位于 {% if %} 块标签中,如果 if 标签求值为真,那么这个节点会被添加到 DOM 中,如果 if 标签求值为假,则这个节点将会从 DOM 中移除。
DojoX DTL 的使用与 Django Template Language 类似,首先创建一个 Template 对象,然后创建模板的上下文信息(context,可以理解为变量的集合),最后将 context 作为参数调用 Template 对象的 render 方法输出结果。
dojo.require("dojox.dtl"); dojo.require("dojox.dtl.Context"); var template = new dojox.dtl.Template("Hello {{ place }}!"); var context = new dojox.dtl.Context({ place: "World" }); alert(template.render(context));