您的当前位置:首页正文

.net开源模板引擎jntemplate教程:基础篇之语法

2021-08-04 来源:易榕旅网
.net开源模板引擎jntemplate教程:基础篇之语法

⼀、基本概念

上⼀篇我们简单的介绍了jntemplate并写了⼀个hello world(如果没有看过的,),本⽂将继续介绍jntemplate的模板语法。

我们在讲解语法前,⾸先要了解⼀下标签的概念。在jntemplate中,标签特指⽤来包含模板代码的语法块,它是基本的呈现单元,在模板解析完成后,该语法块将会被替换成具体的数据或者内容。

标签通常使⽤${开头,并且以}结尾,绝⼤部分标签可以省略⼤括号进⾏简写,如${model.UserName} 可以简写为 $model.UserName下⾯将重点介绍⼏个常⽤的语法标签:

注意:标签的符号是可以⾃定义的,⽐如你可以⾃定义为{{model.UserName}} 或者@{model.UserName},本⽂为了⽅便讲解,仅以默认配置为准。

⼆、变量

⽤法:⽤于在模板中输出⼀个变量,该变量可以是任何对象。如:${var},可以简写为$var,其中var 为变量名,变量名只能是字母,下划线与数字的组合,且必须以字母开头。例:

var template = Engine.CreateTemplate(\"

$title

!\");template.Set(\"titleemplate.Render(Console.Out);

三、属性与字段

⽤法: ⽤于访问对象属性或者字段,⽤法与c#类似,字段与属性必须是公开的(public),v2.0.0 中暂时不⽀持匿名对象的访问。如:${model.Name},可以简写为$model.Name.例⼀:

var template = Engine.CreateTemplate(\"

$model.Title

!\");template.Set(\"modelemplate.Render(Console.Out);

如果访问静态属性或字段,需要通过template.SetStaticType(...)来指定静态对象类型。例⼆:

var templateContent = \"${DateTime.Now}\";

var template = Engine.CreateTemplate(templateContent);template.SetStaticType(\"DateTimeemplate.Render(Console.Out);

! 注意:当前版本暂时不⽀持匿名对象访问。

四、索引

⽤法:⽤于访问数组或者IList及其它⽀持索引的对象,⽤法与c#类似,如${arr[1]}例:

var template = Engine.CreateTemplate(\"${arr[0]}\");template.SetStaticType(\"arremplate.Render(Console.Out);

五、函数⽅法

⽤法:⽤于调⽤对象实例⽅法,静态⽅法,或者委托。如:${func(p1,p2....) },可以简写为$func(p1,p2....)。注意:⽅法必须是公开的(public),如果是私有的(private)则⽆法访问。例⼀(实例⽅法):Class1类

public class Class1{

public int Add(int a,int b)

{

return a+b; }}

模板代码:

var template = Engine.CreateTemplate(\"$obj.Add(1,2)\");template.Set(\"objemplate.Render(Console.Out);

例⼆(静态⽅法):

var templateContent = \"${string.Concat(\\\"str1\\\var template = Engine.CreateTemplate(templateContent);template.SetStaticType(\"stringemplate.Render(Console.Out);

例三(委托⽅法):

var template = Engine.CreateTemplate(\"$add(8,-2)\");template.Set>(\"add\{

return x + y;});

template.Render(Console.Out);

六、逻辑判断(IF)

⽤法:⽤于处理代码逻辑,等同于c#⾥⾯的if与else if ,⽀持以下逻辑运算符:⼤于(>),⼩于(<),⼤于等于(>=),⼩于等于(<=),等于(==),不等于(!=),或者(||), 并且(&&)。例⼀:模板:demo.html

$if(id>0)

编号⼤于零$elif(id==0) 编号等于零$else

编号⼩于零$end

后台代码:

var template = Engine.LoadTemplate(@\"c:\\demo.html\");template.Set(\"id\

template.Render(Console.Out);

注意:else if 可以写作$elseif 也可以写作 $elif。标签必须以$end结束

七、列表迭代(Foreach)

⽤法:⽤来遍历输出⼀个列表,等同于c#中foreach,⽬标可以是数组或者实现了IEnumerable 接⼝的任意对象.例⼀:模板:demo.html

$foreach(model in list)

$end

var template = Engine.LoadTemplate(@\"c:\\demo.html\");template.Set(\"listemplate.Render(Console.Out);

$foreach(model in list) 也可以写作 $for(model in list) ,必须使⽤$end 结束标签。

⼋、模板引⽤

⽤法:⽤于引⽤某⼀个公共模板,有⼆种写法$load(\"路径\")与$inclub(\"路径\"):

load 引⽤并解析模板

inclub:引⽤模板(不解析),适⽤于不需要解析的⽂件,⽐如JS,CSS等例:

$load(\"public/header.html\")

这是内容

九、总结

本⽂介绍了jntemplate常⽤的模板语法,包括变量,属性,⽅法,逻辑判断,迭代与模板引⽤这⼏⼤块,只要灵活组合使⽤,完全可以满⾜⽇常开发了。

部分不怎么常⽤的语法⼤家可以⾃⾏可以参考官⽅⽂档。下⼀节,我们将介绍如何在asp.net mvc中使⽤jntemplate。

⽬录:

1.

2. .net 开源模板引擎jntemplate 教程:基础篇之语法全部章节写完后,会再补齐全部⽬录

jntemplate源码下载

gitee:github:

因篇幅问题不能全部显示,请点此查看更多更全内容