doT v2.0.0-beta.1 Release Notes

Release Date: 2020-07-26 // almost 4 years ago
  • ๐Ÿ”„ Changes/additions:

    • ES6 code generated
    • types:
    • varname option renamed to argName
    • ๐Ÿ‘Œ support templates without explicit context "it" - the list of properties should be passed as array to argName option, template function will expect an object and will destructure it into multiple arguments - so it is nearly zero-cost:

      const tmpl = doT.template("{{=foo}}{{=bar}}", {argName: ["foo", "bar"]})tmpl({foo: 1, bar: 2}) // "12"

    • ๐Ÿš€ partial options can be passed, global options object will not be available in the next release.

    • custom encoders:

      • syntax {{<encoder name>!}}, encoders passed to encoders option object ( is any valid JS identifier) as functions (or as code strings in selfContained: true mode).
      • HTML encoding with syntax {{! }} requires passing {encoders: {"": require("dot/encodeHTML")}} options
    • type safe interpolation (maybe % should be dropped...):

      • {{%n=}} - must be number (or exception will be thrown)
      • {{%s=}} - string
      • {{%b=}} - boolean
    • ๐Ÿ‘Œ support iterables for {{~iter:x}} and {{~iter:x:i}} syntaxes (now uses for-of loop).

    • syntax is no longer in options

    • ๐Ÿ”ง configurable delimiters:

      • e.g. {delimiters: {start: "<%", end: "%>"}} via options to change for one template
      • or setDelimiters({start: "<%", end: "%>"}) to change globally
    • reduces internal variables names usage, two configurable name prefixes are used, can be changed via options (internalPrefix: "_val", encodersPrefix: "_enc").

    • optional iterator index variable is now local (with let)

    โœ‚ Removed:

    • doT.process (possibly will be added if there is an interest)
    • ๐Ÿ’ป browser bundle (possibly will be added if there is a substantial interest)
    • dot-packer - can be added as a separate module to dot-template org
    • legacy doU engine
    • 0๏ธโƒฃ append: false option (only append: true now, that is faster and that was default anyway)
    • ๐Ÿ‘€ no HTML interpolation by default (see custom encoders above)