nVelocity使用简介

一、nVelocity定义

nVelocity是一个基于.NET的模板引擎。它定义了简单的模板语言从HTML页面中引用由.NET代码定义的对象,和引用外部文件等。从而使得界面设计人员与.NET程序开发人员基本分离。以下总结了网上比较常用的模板标记,以及本人对nVelocity的认识。

一、nVelocity的常用功能简介

1、 在页面中定义变量,并进行简单的运算。

2、 在页面中获得对后台程序实体对象的引用。

3、 在页面中迭代实体对象集合。

4、 在页面中获得实体对象的属性,及其方法。

5、 对逻辑判读语句的支持。

6、 对外部文件的引用。

7、 对外部文件的解析。

 

二、nVelocity的工作原理

    可以使用.NET的反射实现。以下是nVelocity对迭代实体类的简单实现步骤:

1、 定义People类,并拥有Name与Sex属性。表示一个人。

2、 在页面中列出人物列表,则输入以下代码:

#foreach($p in $ps)

<p>欢迎您:$p.Name</p>

#end

3、 获取人物列表,保存在_List中。并指定页面中的字符串“ps”对应_List。

4、以文本方式读取模板文件,并匹配#foreach…#end段,如果匹配到则继续匹配$X in 

$XX 段,分别记录用于保存集合与单项的字符,本次为“p”与“ps”。

5         用Type对象的GetProperties()方法获取_list中每一项的所有属性,并在

#foreach  #end段中循环将$p + 属性名称替换为当前对象的当前属性的值。当然如果要调用对象的方法也可以用同样的方式获得。

 

三、基本语法

1、特殊字符介绍

A、“#”:表示开始做什么事情。

B、“$”:表示用于获得什么。

C、“##“:单行注释。

D、 “#*... …*#”:多行注释。

2、关键字

A、 Set:开始做什么事情,比如定义变量,给变量重新赋值等。

B、 Foreach:迭代语句

C、 If:条件判断语句

D、 Elseif

E、  Else

F、  Include:对外部文件的引用,开始位置为模板路径。

G、 Parse:对外部文件的引用,并用nVelocity方式解析。

H、 Macro:创建宏,可以重复做某件事,类似于方法。     

I、   Even:双数执行

J、   Odd :单数执行

K、  Each:每次都执行

(备注:所有变量在未定义之前不能使用(因为我们习惯了有全局变量的习惯)。.NET后台定义的对象除外。模板语言区分大小写,所有的关键字必须为小写,上面的列表不是很全)

 

四、使用示例

1、  在页面中使用变量

定义变量:#set($a = “CNF”)

引用变量:欢迎光临:$a

 

定义变量:#set($a = 1)

运算:#set($a = $a + 1)

输出:$a   ##得:2

运算:#set($a = $a*5)

输出:$a   ##得:10

    (备注:从以上可以看出nVelocity的替换顺序与.NET程序代码的执行基本一致,如果放在Foreach语句块中可以实现累加。并用If语句获得行号,对特殊行号的内容特殊处理。所有变量在未定义之前不能使用,.NET后台对象除外)

     

2、  在页面中使用条件判断语句

 #if ($p.StrSex == "女")

      #set($Sex = "女士")

    #elseif ($p.StrSex == "男")

      #set($Sex = "先生")

    #elseif ($p.StrSex == "无")

      #set($Sex = "人妖")

    #else

      #set($Sex = "怪物")

    #end

   (备注:可以嵌套在Foreach语句块中,用于对每个列表对象进行特殊显示处理。)

 

3、  创建宏,可以当做方法使用。

创建:#macro(Add $a $b)

              #set($c = $a + $b)

<p>最后结果:$c</p>

#end

   调用:#Add(1 2)

(备注:模板引擎的初始化方法有3种,一种参数为模板文件内容,一种是带模板文件地址。结果发现带模板文件内容的,在应用宏的时候好像有点问题。另外一个就是假如在宏里面加入一个判断语句,则可以实现递归调用。)

 

4、  使用对象方法

定义变量:#set($str = “CNF”)

调用方法:$str.SubString(0,1) 

输出:C

 

        定义变量:#set($a = 123)

        调用方法:$a.GetType()

            输出:System.Int32

        (备注:不管是.NET代码定义的对象,还是设计人员在页面中定义的变量,都可以使用对象的方法及属性,这一点非常强大。)

 

5、  使用even与odd简化代码,each辅助

如上面所说用IF语句可以在列表中为每行创建不同的样式,但如果只需要区分单行与双行的话,可以使用even与odd简化代码。如下:

#foreach($p in $ps)

   #even

   <p>双行:$p.StrName</p>

   #odd

   <p>单行:$p.StrName</p>

#end

       (备注:在使用这两个关键字时,出现了与创建宏一样的问题,即在初始化模板引   

       引擎的时候,如果是用模板文件内容初始化的,会出现问题)

 

6、  引用外部文件

Include与parse都有引入外部文件的作用,不同的是parse会根据nVelocity模板语言解析外部文件。也就是说如果引入当前模板,则会出现死循环。

 

7、  使用Foreach语句

上面多次列出Foreach语句,相信已经知道它的作用。即循环列出一组对象集合。比如:#foreach($p in $ps),其中$ps需要与后台代码中具体的实体类名称对应,$p代表$ps中的其中一项。上面已经提到过,即$p可以调用实体类的属性和方法。

(备注:#foreach 语句必须以#end结束)

 

8、  创建数组

创建:#set($List = [“男”,”女”])

遍历:#foreach($Item in $List)

      <p>List成员:$Item</p>

      #end

输出:List成员:男

     List成员:女

 

五、希望大家在看过此文以后,能帮我继续完善。

 

posted @ 2010-10-18 09:29  CNF  阅读(2765)  评论(3编辑  收藏  举报