Dot.js和Angular:在框架之间标准化html模板的任何方法吗?

时间:2018-04-23 15:45:52

标签: dot.js

DoT.js website,将模板数据绑定或插值显示为

{{= it.modelFieldName }}

Angular 2+显示

{{modelFieldName}}

除了在使用模板之前更换字符串之外,Dot.js如何使用{{modelFieldName}},删除= it.并仍然可以使用?

原因:我想为我们的非程序员设计师创建一个模板指令。设计师使用Adobe Illustrator创建模板,使用InkScape转换为SVG,然后程序员在他们选择的模板框架中引用外部SVG模板(一些使用带有Dot的Knockout.js,一些使用Angular 2 +。)

1 个答案:

答案 0 :(得分:1)

此配置的名称为delimiters

尝试按如下方式自定义dot

doT.templateSettings.interpolate = /\{\{([\s\S]+?)\}\}/g;

来源:http://olado.github.io/doT/index.html

API

doT.templateSettings - 默认编译设置

您可以通过更改编译设置来自定义doT。以下是默认设置:
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
};

如果您想使用自己的分隔符,可以根据自己的喜好修改`doT.templateSettings`中的RegEx。

以下是默认分隔符列表:

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

默认情况下,模板中的数据必须以' it'引用。要更改默认变量名称,请修改设置' varname'。例如,如果您设置' varname' to" foo,bar"您将能够传递2个数据实例,并通过foo和bar从模板中引用它们。

要控制空白,请使用“剥离”。选项,true - 剥离,假 - 保留。

'附加'是性能优化设置。它允许调整性能,具体取决于使用的javascript引擎和模板的大小,它可能会产生更好的结果,并将append设置为false。

如果是自包含的'是的,doT将生成与doT无依赖关系的函数。通常,生成的函数不依赖于doT,但encodeHTML除外,它仅在使用编码时才添加。如果是自包含的'是真的,模板需要编码,encodeHTML函数将包含在生成的模板函数中。