⼀、基本概念
上⼀篇我们简单的介绍了jntemplate并写了⼀个hello world(如果没有看过的,),本⽂将继续介绍jntemplate的模板语法。
我们在讲解语法前,⾸先要了解⼀下标签的概念。在jntemplate中,标签特指⽤来包含模板代码的语法块,它是基本的呈现单元,在模板解析完成后,该语法块将会被替换成具体的数据或者内容。
标签通常使⽤${开头,并且以}结尾,绝⼤部分标签可以省略⼤括号进⾏简写,如${model.UserName} 可以简写为 $model.UserName下⾯将重点介绍⼏个常⽤的语法标签:
注意:标签的符号是可以⾃定义的,⽐如你可以⾃定义为{{model.UserName}} 或者@{model.UserName},本⽂为了⽅便讲解,仅以默认配置为准。
⼆、变量
⽤法:⽤于在模板中输出⼀个变量,该变量可以是任何对象。如:${var},可以简写为$var,其中var 为变量名,变量名只能是字母,下划线与数字的组合,且必须以字母开头。例:
var template = Engine.CreateTemplate(\"
三、属性与字段
⽤法: ⽤于访问对象属性或者字段,⽤法与c#类似,字段与属性必须是公开的(public),v2.0.0 中暂时不⽀持匿名对象的访问。如:${model.Name},可以简写为$model.Name.例⼀:
var template = Engine.CreateTemplate(\"
如果访问静态属性或字段,需要通过template.SetStaticType(...)来指定静态对象类型。例⼆:
var templateContent = \"${DateTime.Now}\";
var template = Engine.CreateTemplate(templateContent);template.SetStaticType(\"DateTimeemplate.Render(Console.Out);
! 注意:当前版本暂时不⽀持匿名对象访问。
四、索引
⽤法:⽤于访问数组或者IList 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 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) 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: 因篇幅问题不能全部显示,请点此查看更多更全内容