配置项

我们可以通过Engine.Configure(...)方法进行引擎的初始配置 ,配置应在模板解析前进行,无须重复配置(asp.net mvc可以在Startup类里面进行配置,webfrom可以在Global.asaxApplication_Start里面配置),该方法有四个重载,可以根据实际情况使用对应的方法。

该操作不是必须的,如果不进行显式配置,系统会自动以默认参数初始化引擎。

配置标签符号

标签符号是指标签的前后缀,默认由前缀${与后缀}及简写符号$三个元素组成,如果不需要简写模式,可以通过参数DisableeLogogram禁用简写,如果配置不正确可能导致模板无法解析。

Engine.Configure(c => {
    c.TagPrefix = "${";
    c.TagSuffix = "}";
    c.TagFlag = '$';
});

配置资源目录

当使用Engine.LoadTemplate(...)创建模板或者使用$load(...)$inclub(...)标签时,如果填写的是相对路径,则根据顺序在资源目录搜寻模板文件。

            Engine.Configure(c =>{
                c.ResourceDirectories.AddRange(new string[] {
                    @"c:\wwwroot\theme",
                    @"c:\wwwroot\view"
                });
            });

如:Engine.LoadTemplate("index.html") 会依次去c:\wwwroot\theme目录与c:\wwwroot\view寻找index.html文件。

配置全局数据

全局数据指在配置后可以直接在模板中使用的数据,不需要再每个模板单独配置,即一次配置,多处使用。配置全局数据我们可以使用Engine.Configure(Action<IConfig, VariableScope>)方法,

Engine.Configure((c, data) =>
{
    data.Set("name", "jntemplate");
    data.Set("id", 1);
    //...其它数据
});

v2.2.0及以上版本请使用以下用法

Engine.Configure((options) =>
{
    options.Data.Set("name", "jntemplate");
    options.Data.Set("id", 1);
    //...其它数据
});

配置标签输出模式

通过OutMode可以配置标签输出后文本的处理模式,可选项:

  • None: 默认模式,不做任何处理
  • StripWhiteSpace:清理空白字符模式, 清空标签前后的空白字符,可以让代码更紧凑
  • Auto: 自动模式,智能处理标签前后换行符,让输出的源码更美观
Engine.Configure((c) =>
{
    c.OutMode = OutMode.Auto
});

切换编译模式

V2.0版本开始,引擎重构了核心代码,增加了模板的编译机制,使引擎性能得到了进一步的提升。但是基于使用场景的考虑,我们允许用户自己手动切换解析模式。

使用编译引擎(V2.0默认)

Engine.UseCompileEngine();

使用解析引擎(V1.0默认)

Engine.UseInterpretationEngine();

注意:

  • v2.3.0 以下版本请使用Engine.EnableCompile()Engine.DisableCompile() 进行切换。
  • v1.x版本只有解析引擎。

二者的区别如下:

  • 编译引擎:第一次访问模板时会进行模板编译,编译完成后性能可以达到或接近原生代码的性能。适用于高频场景,比如传统的web场景。
  • 解析引擎:主要使用动态技术(Reflection或者Expression)来访问对象,适用于需要灵活但是访问频率比较低的场景,比如代码生成器。

二者之间语法一致,但是使用细节上会略有区别,实际使用中不要混用。仅需在初始化配置中切换一次即可。不要在使用中途动态切换或者频繁切换,否则容易造成性能上的问题。

其它

其它配置项请参考api自行了解。

Last Updated:
Contributors: 翅膀的初衷, hnvvv