Page de test v2.1.0

Tests du template DoT.js



  • custom delimiters
  • runtime evaluation
  • runtime interpolation
  • compile-time evaluation
  • partials support
  • conditionals support
  • array iterators
  • encoding
  • control whitespace - strip or preserve
  • streaming friendly
  • use it as logic-less or with logic, it is up to you

For browsers

Include the javascript file in your source:

<script type="text/javascript" src="doT.js"></script>


// 1. Compile template function
var tempFn = doT.template("<h1>Here is a sample template {{}}</h1>");
// 2. Use template function as many times as you like
var resultText = tempFn({foo: 'with doT'});


doT.templateSettings - default compilation settings

You can customize doT by changing compilation settings. Here are the default settings:

doT.templateSettings = {
      evaluate:    /\{\{([\s\S]+?)\}\}/g,
      interpolate: /\{\{=([\s\S]+?)\}\}/g,
      encode:      /\{\{!([\s\S]+?)\}\}/g,
      use:         /\{\{#([\s\S]+?)\}\}/g,
      define:      /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
      conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,
      iterate:     /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
      varname: 'it',
      strip: true,
      append: true,
      selfcontained: false

If you want to use your own delimiters, you can modify RegEx in doT.templateSettings to your liking.

Here is the list of default delimiters:

{{ }}for evaluation
{{= }}for interpolation
{{! }}for interpolation with encoding
{{# }}for compile-time evaluation/includes and partials
{{## #}}for compile-time defines
{{? }}for conditionals
{{~ }}for array iteration

By default, the data in the template must be referenced with 'it'. To change the default variable name, modify setting 'varname'. For example, if you set 'varname' to "foo, bar" you will be able to pass 2 data instances and refer to them from the template by foo and bar.

To control whitespace use 'strip' option, true - to strip, false - to preserve.

'append' is a performance optimization setting. It allows to tweak performance, depending on the javascript engine used and size of the template, it may produce better results with append set to false.

If 'selfcontained' is true, doT will produce functions that have no dependencies on doT. In general, generated functions have no dependencies on doT, with the exception for encodeHTML and it is only added if encoding is used. If 'selfcontained' is true and template needs encoding, encodeHTML function will be included in the generated template function.

doT.template - template compilation function

Call this function to compile your template into a function.

function(tmpl, c, def)
  • tmpl - template text
  • c - custom compilation settings, if null, doT.templateSettings is used
  • def - data for compile time evaluation, see advanced sample.

By default, the produced function expects one parameter - data - with the name 'it'. The names and number of parameters can be changed by changing doT.templateSettings.varname