4强大的模板引擎开源软件NVelocity.docx_第1页
4强大的模板引擎开源软件NVelocity.docx_第2页
4强大的模板引擎开源软件NVelocity.docx_第3页
4强大的模板引擎开源软件NVelocity.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

强大的模板引擎开源软件NVelocity 背景知识NVelocity(/projects/nvelocity )是从java编写的Velocity移植的.net版本,是java界超强的模版系统,.net版本的NVelocity目前版本为0.42。NVelocity拥有完善的、丰富的模板语言(VTL,Velocity Template Language) ,几乎所有高级语言的特性都可以在模板引擎语言中找到。(如流程控制语句、数学运算、关系和逻辑操作符、函数定义、注释等等)NVelocity可以做什么?能够快速生成所需的代码、SQL脚本、页面文件等基于文本内容的文件生成速度快、模板语言完善、灵活性好容易学习、开源,免费使用前身为Velocity(Java),使用者多,资料全用途在编写代码的时候,我们可以发现很多内容都是不需要变化的,变化的只是一小部分内容,对不同的对象,这些内容不同。如果我们需要生成一个变化的文档,是否需要在代码拷贝这些不变化的内容么,或者把它剥离开放到其他的文件去么?还有我们是否能对这些内容有一些简单的控制和引用么?简单例子(主要规则:引用以$开头用于取得什么东西,而指令以# 开始用于做什么事情)#set($foo=false)#if($foo)thisistrue#elseif($bar)thisisfalse#elseif(true)thisshouldbefollowedbytwoblanklines#end#thisisasinglelinecomment#*thisisamultilinecomment#if(*#set($user=jason)#set($login=false)#set($count=5)#if($user=jason)theuser$userisloggedin!#end#if($count=5)thecountis5!#end#if($login=false)theuserisntloggedin.#end#if($count!=3)$countisnotequalto3#end变量说明在VTL中,所有变量标识符的开头要加上$字符,如$Name,也可以用一种更加明确的方法表示,例如$name。变量标识符被映射到稍后即将介绍的VelocityContext对象。在模板引擎处理模板时,变量名称(如name)被替换成VelocityContext中提供的值C#代码Velocity.Init(perties);VelocityContextcontext=newVelocityContext();context.Put(list,Names);Templatetemplate=null;trytemplate=Velocity.GetTemplate(test.cs.vm);catch(ParseErrorExceptionpee)System.Console.Out.WriteLine(Syntaxerror:+pee);if(template!=null)template.Merge(context,System.Console.Out);注释单行注释# This is a single line comment多行注释 #*Thus begins a multi-line comment. Online visitors wontsee this text because the Velocity Templating Engine willignore it.*#属性或方法$customer.Address$purchase.Total$page.SetTitle( My Home Page )$person.SetAttributes( Strange, Weird, Excited )指令 #set( $primate = monkey ) #set( $monkey.Friend = monica )#set( $criteria = name, address )#foreach( $criterion in $criteria ) #set( $result = $query.criteria($criterion) ) #if( $result ) Query was successful #end#endIf / ElseIf / ElseForeach 循环#if( $foo 10 ) Go North#elseif( $foo = 10 ) Go East#elseif( $bar = 6 ) Go South#else Go West#end#foreach( $product in $allProducts ) $product#end宏 (称为函数更合适)#macro 脚本元素允许模板设计者在VTL 模板中定义重复的段。 Velocimacros 不管是在复杂还是简单的场合都非常有用。下面这个Velocimacro,仅用来节省击键和减少排版错误,介绍了一些NVelocity宏的概念。 可以带参数,参数放在宏名称的后面,空格隔开#macro( d )#end#d()#macro( callme $a ) $a $a $a#end#callme( $foo.bar() )包含 #include 脚本元素允许模板设计人员包含(导入)本地文件, 这个文件将插入到#include 指令被定义的地方。文件的内容并不通过模板引擎来渲染。#include( one.txt )解析#parse 脚本元素允许页面设计员导入包含VTL的本地文件。 Velocity将解析和渲染指定的模板。#parse( me.vm )在根目录NVelocity-*testtemplates下有各种模板语言语法的实例,在NVelocity-* examples目录下有如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论