NVelocity介绍和基础

合集下载

Velocity用户指南(中文版)(1)

Velocity用户指南(中文版)(1)

Velocity用户指南(中文版)(1)
作者:/chenyun2000/archive/2004/07/08/3676 0.aspx
什么是Velocity?
Velocity是基于Java的模板引擎。

它允许Web页面开发者引用Java代码中定义的方法。

Web设计者可以和Java程序开发者并行开发遵循MVC模式的Web站点。

这意味着,Web设计者可以将精力放在好的Web站点设计上,而Java程序开发者可以将精力放在编写代码上。

Velocity将Java代码从Web页面中分离,使Web站点更具长期可维护性,并提供了一种替代JSP或PHP的方案。

VTL(Velocity Template Language)介绍
VTL提供一种简单、容易和干静的方法将动态内容合并到Web页面。

VTL使用引用(references)将动态内容插入到Web页面中。

变量是一种引用,可以指向Java代码中的定义内容,或者由Web页面中的VTL语句来获得值。

下面是一个可以插入到HTML文档的VTL语句的例子:
VTL语句以#开头,并包含指令(set)。

变量以$开头,用引号引起。

引号可以是单引号,也可以是双引号。

前者引用具体的String值;后者可以包含Velocity引用,例如”hello, $name”,$name会用其当前的值替换。

上面的例子是将值Velocity赋值给变量a。

当变量被赋值后,就可以在HTML文档的任何地方引用,下面是Hello Velocity World!的例子:
注释
VTL支持单行注释(以##开始)和多行注释(包括在#*和*#之间),下面是一个例子:。

NVelocity语法

NVelocity语法

默认情况下,NVelocity解析是不分大小写的,当然可以通过设置runtime.strict.math=true,采用严格解析模式。

##指定用户名字欢迎你: $!<table>###输出用户喜好的MuD#foreach( $mud in $mudsOnSpecial )#if ( $customer.hasPurchased($mud) )<tr><td>$flogger.getPromo( $mud )</td></tr>#end#end</table>set指示符使用一个表达式(expression) (包含在一对括号里) –将一个值value (这里是Velocity)付给变量a,(变量名在左边,值在右边,用=组合起来).以$开头的表示“引用”意思是取得一些东东.可引用变量,属性,方法属性可以引用到对象的命令. Velocity会使用合适的策略选择引用到的命令. 它会根据协定的命令命令格式查找. 无论属性引用的的名字是否大小写,Velocity都有固定的查找规则.如在$customer.address引用时,查找顺序是:getaddress()getAddress()get("address")isAddress()对于VTL中大写的属性名Address引用,将是:getAddress()getaddress()get("Address")isAddress()正规引用格式${mudSlinger}1.Jack is a $vicemaniac.2.Jack is a ${vice}maniac.这样,Velocity就知你要的是$vice, 而不是$vicemaniac变量,正规引用格式一般用于在模板中直接调整字符串内容.Quiet Reference Notation(静态引用输出)Velocity遇到一个不能处理的引用时,一般他会直接输出这个引用$email的写法,页面上会看到的是$email,如下例,我们可以在$后面加上一个!号,那么就会输出空白:.<input type="text"name="email"value="$email"/><input type="text"name="email"value="$!email"/>正式的写法是:.<input type="text"name="email"value="$! {email}"/>Getting literal( 语义问题)velocity使用$,#字符来标志它的声明,但有时,HTML中因为某种其它意图,也会写出这样的字符1.Currency(货币标志)如美元 $2.50!这样的写法出现到模板中, VTL处理时是不会出错,会正确的输出$2.50!这个你想要的结果。

Velocity介绍.

Velocity介绍.

}
3.1Velocity原理举例说明
Velocity 文件(hello.vm) <html> <body> <table> <tr><td> hello $name; </td></tr> </table> </html> 这个例子的输出效果为: Hello Velocity
4. VTL介绍
VTL提供一种简单、容易和干静的方法将 动态内容合并到Web页面。VTL使用引 用(references)将动态内容插入到Web页 面中。变量是一种引用,可以指向Java 代码中的定义内容,或者由Web页面中 的VTL语句来获得值。 例如:#set( $a = "Velocity" ) VTL语句以#开头,并包含指令(set)。 变量以$开头,用引号引起 VTL语法包括: 1,注释 2,引用(References) 3,指令(Directives)
4.2VTL---引用(References)
VTL有3种类型的引用:变量、属性和方法。 (1)变量 变量的格式:$VTL标识符 VTL标识符以字母开始,由字母、数字、 横划线(-)或下划线(_)组成。 例如下面的例子: #set( $foo = "gibbous" ) $moon = $foo 输出结果是:$moon = gibbous
4.3.1VTL---#set
(1)#set RHS可以是简单的算术表达式 如果RHS的结果为null,是不会赋值给LHS的 String文字可以使用双引号或单引号括起。两 者的主要区别是双引号中的引用会替换成相应 的值,而单引号中的引用原样输出 例如: #set( $value = $foo + 1 ) ## Addition #set( $directoryRoot = "www" ) #set( $templateName = "index.vm" ) # s e t ( $ t e m p l a t e = $directoryRoot/$templateName" ) $template 输出结果是:www/index.vm

velocity入门教程

velocity入门教程
<servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-c lass>
</servlet> <servlet-mapping>
<servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> </web-app>
velocityContext.put("txt", "hello, world!");
StringWriter stringWriter = new StringWriter(); template.merge(velocityContext, stringWriter);
System.out.println(stringWriter.toString()); } }
代码中首先初始化一个 velocity 引擎,并载入一个.vm 文件,vm 就是 velocity 模板文
件的标准后缀,初始化 velocity 上下文,将一个叫做“hello, world!”的字符串以一个名
为“txt”的键,加入 velocity 上下文中,然后输出最终结果。
4
hello.vm 的内容为$txt
response); }
}
代码中,我们仅仅是向 request 域中放入了一个叫做“txt”的属性,然后指定了 vm
视图的路径,和使用 JSP 视图做法是一样的。
在/WEB-INF/views 下,创建一个 test.vm,内容如下

velocity基本语法及指南

velocity基本语法及指南

2.3 动作指令
• #if / #elseif / #else 条件判断
格式:#if (condition) statement #elseif ( condition ) statement #else statement #end 注:condition 如果是boolean 型,根据true 或false 决定, 否则非null 时认为是true. 其中比较是否相等皆用 “ == ”,包括数字、字符串, 以及同一个类的不同对象或不同类的对象

3. 环境配置
3.1 需要的.jar
commons-beanutils-1.7.0.jar 对bean操作的一些类 commons-collections-3.2.jar 扩展了java.util.Map的一些集合 commons-digester-1.8.jar 用于处理xml转换到对象的工具类 commons-lang-2.2.jar 扩展了ng的类 commons-logging-1.1.jar 日志输出类 velocity-1.7.jar 包含velocity运行时需要的类 velocity-tools-2.0.jar 视图控制和系统工具类
Velocity 模板介绍
1. Velocity
Velocity 是一个基于java 的模板引擎(template engine)。
2. VTL
提供一种简单、容易的方法将动态内容合并到Web页面。
2.1 VTL注释
• 单行注解:
例:## This is a comment. • 多行注解: 例:#* This is a multiline comment. This is the second line. *#
2.2 语法

NVelocity VTL语法

NVelocity VTL语法

注释单行注释以##开始,多行注释以#*开始,以*#结束。

注释的内容不会出现在输出中属性属性引用以$符号开始。

属性可以是服务器端C#代码设置的,也可以在NVelocity模板中定义属性,比如下面语句在NVelocity模板中定义一个属性#set (#msg="this variable is defined in NVelocity.")NVelocity中定义的属性一般为字符串值,赋值时可以使用单引号将字符串值括起来,也可以使用双引号,他们的区别是:如果字符串值中有用到其他变量,使用单引号时该变量名字直接作为字符串的值处理,而使用双引号时该变量名字将使用属性的值进行替换(可以设置NVelocity关闭这个选项)在模板中如果需要输出以$符号开始的文本(非变量),有2种处理方式。

如果他不会作为属性赋值,则可以直接输出,因为NVelocity对没有赋值的属性,直接输出属性名字(包括$符号);如果他是一个已经赋值的属性,则需要在$符号前面添加一个转义用的反斜杠\符号对于非字符串类型的属性,NVelocity调用属性的ToString()方法转换为字符串输出对于对象类型的属性,可以使用类似$方式,NVelocity目前的版本已经支持属性名称非大小写敏感控制指令条件指令:NVelocity中的控制指令基本上就2个:条件指令和循环指令。

NVelocity对宏的支持不太好#if($score>1000) Expert #elseif($score>500) Senior #else Junior #endif与Velocity不一样的地方:NVelocity不支持#{else}这个语法,#else、#endif指令必须与前后的内容空格分开循环指令:NVelocity的循环指令,每个指令必须单独占用一行,不能有注释、输出内容等NVelocity对Velocity的循环指令做了扩展,加入了Fog Creek的Fancy Loops基本语法如下:#foreach($i in $items)#each(this is optional since its the default section)text which appears for each item#beforetext which appears before each item#aftertext which appears after each item#betweentext which appears between each two items#oddtext which appears for every other item, including the firsttext which appears for every other item, starting with the second #nodataContent rendered if $items evaluated to null or empty#beforealltext which appears before the loop, only if there are itemsmatching condition#afteralltext which appears after the loop, only of there are itemsmatching condition#endFancy Loops 指令非常实用,例如在StringTemplate 中想要类似的效果就比较麻烦其他还有#include 、#parse 、#stop 指令,详细的语法参考VTL Reference基本用法下载Castle NVelocity 项目,建一个测试用的web site ,引用NVelocity.dll ,引用的命名空间如下:using System;using System.Collections.Generic;using System.Data;using Commons.Collections;using NVelocity;using NVelocity.App;using NVelocity.Runtime;建立一个NVelocity 模板,内容如下:01 <div class="query-form">02 <table>03 <tr>04 <td>姓名:</td>05 <td><input type="text" id="txtQryName" class="text" value="$qryName" /></td>06 <td>地址:</td>07 <td><input type="text" id="txtQryAddress" class="text" value="$qryAddress" /></td>08 <td><input type="button" id="btnQuery" value="查询" /></td> 09 </tr>10 </table>11 </div>12 <br>13 <h2>Contact List</h2>14 <div class="contact-list">15 #foreach($c in $contacts)16 #beforeall17 <table>18 <tr class="list-header">19 <td>姓名</td>20 <td>邮箱</td>21 <td>地址</td>22 <td>会员等级</td>23 </tr>24 #odd25 <tr class="list-odd">26 #even27 <tr class="list-even">28 #each29 <td>$c.set_Name("$ - W") $c.get_Name()</td>30 <td><a href="mailto:$c.EMail">$c.EMail</a></td>31 <td>$c.Address</td>32 <td>#if($c.TotalOrderAmt>1000)钻卡会员33 #elseif($c.TotalOrderAmt>200)金卡会员34 #else Standard#end</td>35 #after36 </tr>37 #afterall38 </table>39 #nodata40 No contacts found!41 #end42 </div>页面.cs代码如下:01 public class Contact02 {03 public string Name { get; set; }04 public string EMail { get; set; }05 public string Address { get; set; }06 public decimal TotalOrderAmt { get; set; }07 }08 <br>09 protected void Page_Load(object sender, EventArgs e)10 {11 VelocityEngine engine = new VelocityEngine();12 ExtendedProperties prop = new ExtendedProperties();13 prop.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, Server.MapPath("./"));14 prop.AddProperty(RuntimeConstants.ENCODING_DEFAULT, "utf-8");15 engine.Init(prop);16 Template template = engine.GetTemplate("contact-list.vm");17 VelocityContext context = new VelocityContext();18 context.Put("contacts", new List<Contact>()19 {20 new Contact() {21 Name="Richie Liu", TotalOrderAmt=180,22 EMail="RichieLiu-test@",23 Address="上海徐汇区钦州路" },24 new Contact() {25 Name="Kevin Zhang",TotalOrderAmt=0,26 EMail="KevinZhang-test@",27 Address="苏州新区" },28 new Contact() {29 Name="Eric Wong", TotalOrderAmt=626,30 EMail="EricWong-test@",31 Address="厦门海沧" },32 new Contact() {33 Name="RicCC", TotalOrderAmt=2080,34 EMail="RicCC-test@",35 Address="上海徐汇区钦州路" }36 });37 context.Put("qryName", "Ric");38 context.Put("qryAddress", DateTime.Now);39 <br>40 template.Merge(context, this.Response.Output);41 }则页面运行结果:上面的代码中,演示了在NVelocity 模板中调用对象的方法,比如$c.get_Name()通过getter 方法读取属性值;$c.set_Name("$ - W")为每个contact 的名字添加一个-W 后缀 如果$contacts 集合中没有记录,则只会输出No contacts found!文本,不会输出任何table 信息,包括#beforeall 、#afterall 指令中的内容也不会输出接下来测试一下#foreach 指令能够支持的集合类型以及用法(只要支持IEnumarable 接口的都可以使用#foreach 指令)NVelocity 模板如下:01 <br />02 <h2>Item List - Array</h2>03 <div>04 #foreach($item in $items1)05 #each06 $item07 #betwee n08 ,09 #end10 </div>11 <br>12 <br />13 <h2>Item List - List</h2>14 <div>15 #foreach($item in $items2)16 #each17 $item.ToString("yyyy-MM-dd")18 #between19 ,20 #end21 </div>22 <br>23 <br />24 <h2>Item List - Dictionary</h2>25 <div>26 #foreach($item in $items3)27 #each28 { $item.Key - $item.Value }29 #between30 ,#end31 </div>32 <br>33 <br />34 <h2>Item List - DataTable</h2>35 <div>36 #foreach($item in $items4.Rows)37 { $item.Key - $item.Value }38 #between39 ,40 #end41 </div>服务器端设置属性的代码如下:01 context.Put("items1", new string[] { "AAA", "BBB", "CCC" });02 context.Put("items2", new List<DateTime> { new DateTime(1979, 1, 1), new DateTime(2010, 4, 1) });03 <br>04 IDictionary<string, decimal> dic = new Dictionary<string, decimal>(); 05 dic.Add("AAA", 111M);06 dic.Add("BBB", 222M);07 dic.Add("CCC", 333M);08 context.Put("items3", dic);09 <br>10 DataTable table = new DataTable();11 table.Columns.Add(new DataColumn("Key", typeof(string)));12 table.Columns.Add(new DataColumn("Value", typeof(int)));13 DataRow row = table.NewRow();14 row["Key"] = "item 1";15 row["Value"] = 111;16 table.Rows.Add(row);17 row = table.NewRow();18 row["Key"] = "item 2";19 row["Value"] = 222;20 table.Rows.Add(row);21 context.Put("items4", table);页面运行效果如下:。

velocity用法 数据结构

velocity用法 数据结构

velocity用法数据结构(最新版)目录1.Velocity 简介2.Velocity 的基本用法3.Velocity 中的数据结构4.总结正文【1.Velocity 简介】Velocity 是一个基于 Java 的模板引擎,用于生成基于文本的输出,例如:HTML、XML、RTF、TXT 等。

它允许用户通过简单的模板语法定义输出的结构,并通过数据结构填充模板中定义的变量,从而实现代码的复用和简化。

【2.Velocity 的基本用法】Velocity 的基本用法主要包括以下几个步骤:(1)导入 Velocity 库:在项目中引入 Velocity 的 jar 包,例如:velocity-1.7.jar。

(2)配置 Velocity 环境:创建一个 velocity.properties 文件,用于配置 Velocity 的基本属性,例如:输出目录、编码方式等。

(3)编写 Velocity 模板:创建一个.vm 文件,编写模板代码,并在需要的地方使用$符号定义变量。

(4)执行 Velocity 模板:通过 Velocity 引擎执行模板文件,生成目标文件。

【3.Velocity 中的数据结构】Velocity 中的数据结构主要包括以下几种:(1)String:表示一个字符串,用于表示模板中的普通文本。

(2)Integer:表示一个整数,用于表示模板中的整数值。

(3)Double:表示一个浮点数,用于表示模板中的小数值。

(4)Boolean:表示一个布尔值,用于表示模板中的逻辑值。

(5)Date:表示一个日期对象,用于表示模板中的日期值。

(6)ArrayList:表示一个列表,用于表示模板中的列表结构。

(7)HashMap:表示一个哈希表,用于表示模板中的键值对结构。

这些数据结构在 Velocity 模板中通过$符号定义,并在模板引擎执行时进行填充和解析。

【4.总结】Velocity 作为一个强大的模板引擎,可以简化代码的编写,提高开发效率。

Velocity模板语言

Velocity模板语言

Velocity模板语言Velocity是由Apache软件组织提供的一项开放源码项目,它是一个基于Java的模板引擎。

网页制作者可以通过Velocity模板语言(Velocity Template Language,VTL)定义模板(template),并且在模板中不包含任何Java程序代码。

Java开发人员编写程序代码来设置上下文,它包含了用于填充模板的数据。

Velocity引擎能够把模板和上下文合并起来,生成动态网页。

VTL模板和JSP网页的区别在于:在VTL模板中不包含任何Java 代码,并且VTL模板不同经过JSP编译器的编译,VTL模板的解释是由Velocity引擎来完成的。

尽管Velocity也可用于其它独立应用程序的开发,但其主要用途是简化Web应用开发。

Velocity将Java代码从Web页面中分离出来,使Web站点在长时间运行后仍然具有很好的可维护性。

创建基于Velocity的Web应用包括两个步骤:(1)创建Velocity模板;(2)创建扩展VelocityServlet的Servlet类。

在Velocity模板语言中,"$"符号表示跟随其后的字符串为变量。

如果要把"$"符号作为普通字符串处理,应该采用"\$"的形式。

VelocityServlet类,它是HttpServlet类的子类。

它由两个重要方法:loadConfiguration方法handleRequest方法。

loadConfiguration方法类似于HttpServlet类的Init方法,区别在于loadConfiguration方法返回java.util.Properties对象。

handleRequest方法类似于HttpServlet类的doGet和doPost 方法,区别在于handleRequest方法中增加了一个org.apache.velocity.context.Context类型的参数,Context类用来存放所有用于显示到HTML页面上的数据。

velocity注释

velocity注释

velocity注释Velocity注释一、介绍Velocity是一种模板引擎,用于将数据和模板结合生成文本输出。

在Velocity中,注释是一种重要的工具,可以帮助开发人员更好地理解模板代码。

本文将深入介绍Velocity注释的使用方法和最佳实践。

二、注释的作用注释在任何编程语言中都是很常见的,它们不会被编译或执行,但对于代码的理解和维护很有帮助。

Velocity注释起着类似的作用,它们可以在模板代码中添加一些说明,提醒自己或其他开发人员模板的目的、逻辑或特殊考虑。

使用注释可以带来以下好处:1. 提高可读性:注释可以使模板代码更易读和易于理解。

它们可以解释为什么如此编写代码,以及代码的预期结果。

2. 便于维护:在项目进行较长时间后,可能会忘记为什么编写某些特定的模板代码。

注释可以提供背景信息和记录,使维护更加容易。

3. 团队合作:当多个开发人员共同开发模板时,注释可以作为沟通工具。

注释可以解释特定代码段的用途,减少团队成员之间的沟通障碍。

三、注释的语法在Velocity中,使用双斜杠(//)来标识单行注释,使用#*和*#来标识多行注释。

1. 单行注释单行注释用于在代码的同一行添加注释。

例如,下面是一个使用单行注释的例子:```## 通过变量获取用户姓名$!user.getName() // 获取用户姓名```在这个例子中,注释“获取用户姓名”解释了为什么要调用`user.getName()`方法。

2. 多行注释多行注释用于对多行代码进行注释。

例如:```#*这是一个多行注释的例子你可以在这里添加任何注释*#```在这个例子中,注释的内容可以包含任何文本。

四、注释的最佳实践在使用Velocity注释时,有一些最佳实践可以帮助提高代码的可读性和维护性。

1. 注释要清晰明了:注释应该清楚地解释代码的目的、意图或逻辑。

避免使用模棱两可的注释,使其具有明确的信息。

2. 注释时尽量简洁:注释应简洁明了,不要写过于冗长的注释。

Velocity简明教程1

Velocity简明教程1

一、简介Velocity是一个基于java的模板引擎(template engine)。

它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。

Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。

Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。

Velocity 也可以为Turbine web开发架构提供模板服务(template service)。

Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。

二、基本语法1 总括1.1 "#"用来标识Velocity 的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、1.3 "{}"用来明确标识Velocity 变量。

比如在页面中,页面中有一个$someonename,此时,Velocity 将把someonename 作为变量名,若我们程序是想在someone 这个变量的后面紧接着显示name 字符,则上面的标签应该改成${someone}name。

1.4 "!"用来强制把不存在的变量显示为空白。

如当页面中包含$msg,如果msg 对象有值,将显示msg 的值,如果不存在msg 对象同,则在页面中将显示$msg 字符。

velocity衍生意思

velocity衍生意思

velocity衍生意思
“Velocity”一词最初源自拉丁语“velocitas”,意为“迅速”或“快速”。

在物理学中,速度通常指物体在单位时间内所移动的
距离,是一个矢量量,包括大小和方向。

在这个意义上,速度是描
述物体运动快慢和方向的物理量,通常用米每秒(m/s)作为单位。

除了物理学外,“速度”这个词还经常在其他领域中使用。


商业和经济领域,速度可能指的是业务增长或变化的快慢程度,例
如“市场增长速度”或“技术变革速度”。

在软件开发中,速度可
能指团队完成任务或项目的效率和快慢程度,例如“敏捷开发速度”或“迭代开发速度”。

在日常用语中,“速度”也可以用来形容某人做事的快慢程度,例如“他做事的速度很快”,或者用来比喻某种趋势或变化的迅速
程度,例如“科技发展的速度越来越快”。

总的来说,“速度”这个词的衍生意思非常广泛,涵盖了物理学、商业经济、软件开发以及日常生活中的各种领域,都可以用来
描述事物快慢程度或变化的迅速程度。

mean square velocity level -回复

mean square velocity level -回复

mean square velocity level -回复均方速度(mean square velocity)是指气体分子热运动的平均速度的平方的平均值。

它是热力学中重要的物理量,用来描述气体分子的热运动状态。

本文将分步回答有关均方速度的问题,从基本概念的解释开始,到计算均方速度的方法和应用领域的探讨。

第一步:基础概念解释均方速度是描述气体分子运动的一个统计物理学概念。

它代表着气体分子的热运动速度,是研究气体热力学性质的重要参数。

均方速度的计算基于气体分子的速度分布函数,通常使用Maxwell-Boltzmann速度分布函数。

Maxwell-Boltzmann速度分布函数描述了不同速度下气体分子的分布概率。

第二步:计算方法计算均方速度需要知道气体分子的质量和温度。

具体计算方法为首先利用Maxwell-Boltzmann速度分布函数计算不同速度下气体分子的概率分布,然后将每个速度与其概率相乘,再将所有速度的结果相加,最后取平方根即可得到均方速度。

计算公式如下:v_rms = √( (1/ N) * Σ(m_i * v_i^2) )其中v_rms表示均方速度,N表示气体分子的总数,m_i表示第i个分子的质量,v_i表示第i个分子的速度。

第三步:均方速度的意义均方速度可以用来推导气体的热力学性质和进行能量转移的研究。

对于理想气体,均方速度可以用来计算气体分子的平均动能和内能。

根据动能定理,气体分子的动能与温度成正比,因此均方速度和温度具有相关性。

另外,均方速度还可以用于计算气体的压强和粘度等物理量。

第四步:均方速度的应用均方速度在众多领域中都有应用。

在化学反应中,均方速度可以用来估算反应速率。

根据碰撞理论,反应速率与反应物分子之间的碰撞频率有关,而碰撞频率与分子的均方速度有关。

另外,在气体扩散和扩散动力学领域,均方速度可以用来计算气体分子在空间中的扩散速率。

此外,均方速度还可以用于研究气体的热导率和粘滞系数。

velocity形容词

velocity形容词

velocity形容词Velocity是一个名词,表示物体在单位时间内移动的距离。

但是,如果要形容velocity,我们可以使用一些相关的形容词来描述它。

下面是一些常用的形容词:1. High(高),用来描述速度很快的物体。

例如,"The car was moving at a high velocity."2. Fast(快),用来描述速度较快的物体。

例如,"Theathlete ran with a fast velocity."3. Slow(慢),用来描述速度较慢的物体。

例如,"Theturtle moved with a slow velocity."4. Constant(恒定),用来描述速度保持不变的物体。

例如,"The train traveled at a constant velocity."5. Variable(变化的),用来描述速度发生变化的物体。

例如,"The wind blew with a variable velocity."6. Average(平均),用来描述速度的平均值。

例如,"The average velocity of the car was 60 miles per hour."7. Instantaneous(瞬时),用来描述瞬间的速度。

例如,"The speedometer showed the instantaneous velocity of the car."8. Maximum(最大),用来描述速度的最大值。

例如,"The rocket reached its maximum velocity during takeoff."9. Minimum(最小),用来描述速度的最小值。

例如,"The cyclist maintained a minimum velocity while climbing uphill."10. Accelerating(加速),用来描述速度在增加的物体。

使用NVelocity生成内容的几种方式

使用NVelocity生成内容的几种方式

使⽤NVelocity⽣成内容的⼏种⽅式使⽤NVelocity也有⼏个年头了,主要是在我的代码⽣成⼯具Database2Sharp上使⽤来⽣成相关代码的,不过NVelocity是⼀个⾮常不错的模板引擎,可以⽤来⽣成⽂件、页⾯等相关处理,⾮常⾼效和⽅便。

它原先是在⽹站上维护,不过从0.41后,该⽹站就不再进⾏NVelocity更新了,现在可以在⽹站/上获得最新版本的更新,接着版本的更新操作,我们把NVelocity的⼏种⽣成⽂件的操作介绍⼀下,以便⼤家进⾏更深⼊的了解。

我在早期⼏篇⽂章也介绍过NVelocity的使⽤,主要介绍了NVelocity的语法和逻辑的和使⽤,还有就是如何在实际项⽬中进⾏的内容动态⽣成的操作,有兴趣可以翻下下⾯⼏篇⽂章:1、基于NVelocity的⼏种内容⽣成⽅式从上⾯的图⽰,我们可以看到,NVelocity的模板化⽣成包含了3种⽅式,⼀种是从⽂件到⽂件或者字符串,⼀种是从字符串到字符串,他们各⾃的处理⽅式有所不同,但是都能正确解析⾥⾯的内容。

为了更好利⽤NVelocity的特性,我们对它进⾏⼀个初步的辅助类封装。

///<summary>///基于NVelocity的模板⽂件⽣成辅助类///</summary>public class NVelocityHelper{protected VelocityContext context;protected Template template;protected string templateFile;///<summary>///存放键值的字典内容///</summary>private Dictionary<string, object> KeyObjDict = new Dictionary<string, object>();///<summary>///添加⼀个键值对象///</summary>///<param name="key">键,不可重复</param>///<param name="value">值</param>///<returns></returns>public NVelocityHelper AddKeyValue(string key, object value){if (!KeyObjDict.ContainsKey(key)){KeyObjDict.Add(key, value);}return this;}................上⾯的AddKeyValue⽅法,主要⽤来为模板引擎添加⼀些需要绑定在页⾯上的变量对象,这样页⾯变量参数的内容就能正确解析出来了。

每个人应该知道的NVelocity用法

每个人应该知道的NVelocity用法

每个⼈应该知道的NVelocity⽤法NVelocity是⼀个基于.NET的模板引擎(template engine)。

它允许任何⼈仅仅简单的使⽤模板语⾔(template language)来引⽤由.NET代码定义的对象。

从⽽使得界⾯设计⼈员与.NET程序开发⼈员基本分离。

⼀、nVelocity的常⽤功能简介1、在页⾯中定义变量,并进⾏简单的运算。

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

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

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

5、对逻辑判断语句的⽀持。

6、对外部⽂件的引⽤。

7、对外部⽂件的解析。

⼆、nVelocity的⼯作原理可以使⽤.NET的反射实现。

以下是nVelocity对迭代实体类的简单实现步骤:1、定义People类,并拥有Name与Sex属性。

表⽰⼀个⼈。

2、在页⾯中列出⼈物列表,则输⼊以下代码:#foreach(p in ps)<p>欢迎您:$</p>#end3、获取⼈物列表,保存在_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:开始做什么事情,⽐如定义变量,给变量重新赋值等。

(注意:如果右边的操作数是⼀个属性或命令的引⽤⽽返回null,那么赋值将不会成功,且在随后的VTL中也不能再取出使⽤,如果要⽤做if条件,⼀个解决办法是,先给变量赋⼀个值,然后再将⼀个属性或命令的引⽤赋给该变量)B、 Foreach:迭代语句C、 If:条件判断语句D、 ElseifE、 ElseF、 Include:对外部⽂件的引⽤,开始位置为模板路径。

NVelocity用法Net版(完全整理)

NVelocity用法Net版(完全整理)

NVelocity⽤法Net版(完全整理)⼀、NVelocity介绍1.1 Velocity是什么nVelocity是⼀个基于.NET的模板引擎(template engine)。

它允许任何⼈仅仅简单的使⽤模板语⾔(template language)来引⽤由.NET代码定义的对象。

当nVelocity 应⽤于web开发时,界⾯设计⼈员可以和.NET程序开发⼈员同步开发⼀个遵循MVC架构的web站点,也就是说,页⾯设计⼈员可以只关注页⾯的显⽰效果,⽽由.NET程序开发⼈员关注业务逻辑编码。

nVelocity将.NET代码从web页⾯中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在aspx之外⼜提供了⼀种可选的⽅案。

nVelocity的能⼒远不⽌web站点开发这个领域,例如,它可以从模板(template)产⽣SQL和PostScript、XML,它也可以被当作⼀个独⽴⼯具来产⽣源代码和报告,或者作为其他系统的集成组件使⽤。

nVelocity也可以为很多web开发架构提供模板服务(template service)。

我们的系统就提供⼀个模板服务的⽅式允许⼀个web应⽤以⼀个真正的MVC模型进⾏开发。

1.2 nVelocity能为我们作什么?1.1 VTL (nVelocity template language)VTL意味着提供最简单、最容易并且最整洁的⽅式合并页⾯动态内容。

VTL 使⽤references来在站点内嵌套动态内容,⼀个变量就是⼀种类型的reference。

变量是某种类型的reference,它可以指向.NET代码中的定义,或者从当前页⾯内定义的VTL statement得到值。

下⾯是⼀个VTL statement的例⼦,它可以被嵌套到 HTML代码中:#set ( $a = “Velocity” )和所有的VTL statement⼀样,这个statement以#字符开始并且包含⼀个directive:set。

velocity

velocity

velocity 和 vorticity区别
多⼈问就写⼀个吧,维基百科也说得很详细了:
上⾯⼏个动态图演⽰的就是漩涡粒⼦的运动
velocity就是如下图的深蓝⾊箭头,描述物体的运动状态和⽅向⼤⼩:
以下均由arnold 和 KCM等玩意输出,输出教程⽹上很多,可以下载视频看
velocity就是速度,magnitude velocity就是速度的向量⼤⼩值
描述的就是粒⼦的运动⽅向以及⼤⼩,在软件⾥⾯经常使⽤,被分解成motion vector
由XYZ三个运动⽮量通道决定,但是最后输出因为是⼀个图⽚,所以是针对相机平⾯的运动在进⾏红绿着⾊,所以它不是实际的空间运动信息,是平⾯信息,因此后期动态模糊就是根据红绿的⼤⼩来确定:
⾄于magnitude velocity就是mag(velocity),输出速度的绝对⼤⼩,其实这层可以通过上⾯的速度层在后期实现,当然你三维渲染也很快,arnold和MR的蓝⾊通道就是了,不过MR可是超级慢超级慢,差点的机器会挂:
vorticity如下图:
指的⼀个区域的回旋,所以在naiad⾥⾯必须先处理场的涡旋,然后采样转到粒⼦⾝上,单点粒⼦的运动是不可能有这个概念的,我们通过转换是变相的转化给单点粒⼦以供渲染使⽤:
这两层有什么⽤?强咯,velocity是⽤来调⾊,讲俗⼀点就是⽔花调⾊,vorticity就可以让运动的⽔体有⾮常好看的深浅明暗变化,本来⼀个平⾯的⽔体可以渲染成很有⽴体度的哦
⽬前houdini⼊⼿中,houdini做他们就更快速了,我要摆脱naiad,Hehehe...
我做⼤漩涡的特效就是⽤它,因为普通⽔体还好,但是⼤漩涡没它就⿇烦了,很多遮罩靠它实现,说道⼤漩涡,还在解算,郁闷,慢慢来。

Nvelocity参培训档

Nvelocity参培训档

资源指令
• 引用资源指令:#include 引用资源指令: • 例如:#include(‘temp.js’),会把temp.js文件内容插入当前流。可以使 用表达式:#include($temp.url)。 • 引用多个#include( "one.gif","two.txt","three.htm" ) • 引用并解析资源指令:#parse 引用并解析资源指令: • 例如:#parse('temp.js'),与#include不同是,假如temp.js文件中有 #parse('temp.js') #include temp.js NVelocity的指令,变量会进行处理,并把结果插入到当前流。
Nvelocity参考文档 Nvelocity参考文档
目录
• • • • • • • • • • • • • • • • • • • Nvelocity的简介 基本语法 对变量的引用 对属性的引用 对方法的引用 赋值指令 条件指令 逻辑运算 循环指令一(基本应用) 循环指令二(复杂应用) 循环指令三(嵌套循环) 资源指令 停止指令 宏的使用 常用方法(一)(SubString()的用法、 null、notnull的用法) 常用方法(二)(判断是否为’’、Replace的用法) 常用方法(三)( Trim的用法、获取对象条数 ) 常用方法(四)(日期格式化) 常用方法(五)(decimal类型格式化)
常用方法(三)(Trim的用法、获取对象条数 )
• Trim的用法 #if($!{name} != '') #set($tempName =$!{name}) #if($tempName == ' abc ') 还没有去除首尾空格<br/> #end #set($tempName =$tempName.Trim()) #if($tempName == 'abc') 去除成功 #end $tempName #end • 获取对象条数 Datatable: $table.Rows.Count 数组: $tempList.Length List: $tempList.Count 字符串长度 : str.Length

velocity用法 数据结构

velocity用法 数据结构

velocity用法数据结构
摘要:
一、velocity 简介
1.velocity 是什么
2.为什么使用velocity
二、velocity 的数据结构
1.基本数据类型
2.容器数据类型
3.函数式数据类型
三、velocity 的用法
1.数据类型转换
2.数学运算
3.字符串操作
4.数组和集合操作
5.日期和时间操作
6.文件操作
7.异常处理
正文:
velocity 是一个强大的Java 数据结构库,它提供了一系列的数据结构和算法,用于处理各种复杂的数据问题。

velocity 的使用可以大大简化代码,提高开发效率。

velocity 的数据结构包括基本数据类型、容器数据类型和函数式数据类型。

基本数据类型包括各种数字类型、字符串类型、布尔类型等。

容器数据类型包括数组、集合、映射等,用于存储和管理数据。

函数式数据类型包括函数、闭包、迭代器等,用于处理数据。

velocity 的用法非常丰富,包括数据类型转换、数学运算、字符串操作、数组和集合操作、日期和时间操作、文件操作、异常处理等。

例如,可以使用velocity 进行字符串拼接、数组排序、集合过滤等操作。

此外,velocity 还提供了丰富的函数,如数学函数、三角函数、逻辑函数等,可以满足各种复杂的需求。

总的来说,velocity 是一个功能强大的数据结构库,它提供了丰富的数据结构和算法,可以用于处理各种复杂的数据问题。

velocity词根

velocity词根

velocity词根词根:veloc(速度)1. 词根含义:veloc是一个拉丁语词根,意为“速度”。

在许多英语单词中,veloc 作为前缀或后缀出现,表示与速度、快速或移动有关的含义。

2. 词汇:以下是一些常见的以veloc为词根的单词:- velocity:速度,指物体在某个时间内移动的距离。

例如:The velocity of the car was 60 miles per hour.- accelerate:加速,使物体增加运动速度。

例如:The car accelerated quickly when the light turned green.- decelerate:减速,使物体减少运动速度。

例如:The pilot had to decelerate the plane before landing.- velocipede:脚踏车,一种人力驱动的交通工具。

例如:She rode her velocipede to work every day.- velodrome:自行车赛道,用于自行车比赛的椭圆形赛道。

例如:The Olympic velodrome is a world-class facility for cycling events.3. 派生词:以下是一些派生自veloc的常见单词及其含义:- velocity-dependent(adj.):依赖于速度的,表示某个事物或现象与运动速度有关。

例如:The resistance of air is velocity-dependent.- velocimeter(n.):测量速度的仪器,通常用于测量车辆或飞行器的速度。

例如:The pilot checked the velocimeter to see how fast the plane was flying.- velociraptor(n.):迅猛龙,一种生活在白垩纪晚期的肉食性恐龙。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NVelocity介绍和基础1.1 Velocity是什么nVelocity是一个基于.NET的模板引擎(template engine)。

它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象。

当nVelocity应用于web开发时,界面设计人员可以和.NET程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由.NET程序开发人员关注业务逻辑编码。

nVelocity将.NET代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在aspx之外又提供了一种可选的方案。

nVelocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。

nVelocity也可以为很多web开发架构提供模板服务(template service)。

我们的系统就提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。

1.2 nVelocity能为我们作什么?假设你是一家专门出售Mud的在线商店的页面设计人员,让我们暂且称它为“在线MUD 商店”。

你们的业务很旺,客户下了各种类型和数量的Mud订单。

他们都是通过输入用户名和密码后才登陆到你的网站,登陆后就允许他们查看订单并购买更多的Mud。

现在,一种非常流行的mud正在打折销售。

另外有一些客户规律性的购买另外一种也打折但不是很流行的Bright Red Mud,由于购买的人并不多所以它被安置在页面的边缘。

所有用户的信息都是被跟踪并存放于数据库中的,所以某天有一个问题可能会冒出来:为什么不使用nVelocity 来使用户更好的浏览他们感兴趣的商品呢?nVelocity使得web页面的客户化工作非常容易。

作为一个站点的设计人员,你希望每个用户登陆时都拥有自己的页面。

你会见了一些公司内的软件工程师,你发现他们每个人都同意客户应该拥有具有个性化的信息。

那让我们把软件工程师应该作的事情放在一边,看一看你应该作些什么吧。

你可能在页面内嵌套如下的VTL(nVelocity template language)声明:<html><body>Hello $!<table>#foreach( $mud in $nudsOnSpecial )#if ( $customer.hasPurchased( $mud ) )<tr><td>$flogger.getPromo( $mud )</td></tr>#end#end</table>1.3 VTL (nVelocity template language)VTL意味着提供最简单、最容易并且最整洁的方式合并页面动态内容。

VTL 使用references来在站点内嵌套动态内容,一个变量就是一种类型的reference。

变量是某种类型的reference,它可以指向.NET代码中的定义,或者从当前页面内定义的VTL statement得到值。

下面是一个VTL statement的例子,它可以被嵌套到HTML代码中:#set ( $a = “Velocity” )和所有的VTL statement一样,这个statement以#字符开始并且包含一个directive:set。

当一个在线用户请求你的页面时,nVelocity Template Engine将查询整个页面以便发现所有#字符,然后确定哪些是VTL statement,哪些不需要VTL 作任何事情。

#字符后紧跟一个directive:set时,这个set directive使用一个表达式(使用括号封闭)将一个值设置给变量。

变量被列在左边,而它的值被列在右边,最后他们之间使用=号分割。

在上面的例子中,变量是$a,而它的值是Velocity。

和其他的references一样以$字符开始,而值总是以双引号封闭。

Velocity中仅有String可以被赋值给变量。

记住以下的规则:使用$字符开始的references用于得到什么;使用#字符开始的directives用于作些什么。

1.4 Hello nVelocity World一旦某个变量被分配了一个值,那么你就可以在HTML文件的任何地方引用它。

在下面的例子中,一个值被分配给$foo变量,并在其后被引用。

<html><body>#set ( $foo = “nVelocity” )Hello $foo World!</body></html>上面的实现结果是在页面上打印“Hello nVelocity World!”为了使包含VTL directives的statement更具有可读性,我们鼓励你在新行开始一个VTL statement,尽管你不是必须这么作。

Set directive将在后面详细描述。

1.1注释单行注释:## This is a single line comment.多行注释:#*Thus begins a multi-line comment. Online visitors won‟tsee this text because the Velocity Template Engine will ignore it.*#文档格式:#**This is a VTL comment block andmay be used to store such information as the document authorand versioning information:@version 5@author*#1.2 References在VTL中有三种类型的references:变量(variables)、属性(properties)、方法(methods)。

作为一个使用VTL的页面设计者,你和你的工程师必须就references的名称达成共识,以便你可以在你的template中使用它们。

VTL中一切reference可以作为一个String对象处理。

如果有一个对象$foo是一个Integer 对象,那么Velocity将调用它的toString()方法将这个对象转型为String类型。

1.2.1 变量格式要求同.NET。

1.1.1 属性例子:$customer.Address$purchase.Total$customer.Address有两种含义。

它可以表示:查找hashtable对象customer中以Address 为关键字的值;也可以表示调用customer对象的getAddress()方法。

当你的页面被请求时,Velocity将确定以上两种方式选用那种,然后返回适当的值。

1.1.2 方法一个方法就是被定义在.NET中的一段代码,并且它有完成某些有用工作的能力,例如一个执行计算和判断条件是否成立、满足等。

方法是一个由$开始并跟随VTL标识符组成的References,一般还包括一个VTL方法体。

例如:$customer.getAddress()$purchase.getTotal()$page.setTitle( “My Home Page” )$person.setAttributes( [“Strange”, “Weird”, “Excited”] )前两个例子$customer.getAddress()和$purchase.getTotal()看起来挺想上面的属性$customer.Address 和$purchase.Total。

如果你觉得他们之间有某种联系的话,那你是正确的。

VTL属性可以作为VTL方法的缩写。

$customer.Address属性和使用$customer.getAddress()方法具有相同的效果。

如果可能的话使用属性的方式是比较合理的。

属性和方法的不同点在于你能够给一个方法指定一个参数列表。

1.1.1正式reference标记reference的正式格式如下:${mudSlinger}变量${customer.Address}属性${purchase.getTotal()}方法非正式格式更见常用,但是有时还是使用正是格式比较适合。

例如:你希望通过一个变量$vice来动态的组织一个字符串。

Jack is a $vicemaniac.本来变量是$vice现在却变成了$vicemaniac,这样Veloctiy就不知道您到底要什么了。

所以,应该使用正是格式书写Jack is a ${vice}maniac现在Velocity知道变量是$vice而不是$vicemaniac。

1.1.2Quiet reference notation例如:<input type=”text” name=”email” value=”$email” />当页面的form被初始加载时,变量$email还没有值,这时你肯定是希望它能够显示一个空白来代替输出”$email”这样的字段。

那么使用quiet reference notation就比较合适。

<input type=”text” name=”email” value=”$!email”/>这样文本框的初始值就不会是email而是空值了。

正式和quiet格式的reference notation也可一同使用,像下面这样:<input type=”text” name=”email” value=”$!{email}”/>1.1.1Getting literalnVelocity使用特殊字符$和#来帮助它工作,所以如果要在template里使用这些特殊字符要格外小心。

本节将讨论$字符。

在VTL中使用$2.5这样的货币标识是没有问题得的,VTL不会将它错认为是一个reference,因为VTL中的reference总是以一个大写或者小写的字母开始。

VTL中使用“"”作为转义字符。

例如:#set( $email = “foo” )$email"$email""$email"""$email将输出为:foo$email"foo""$email如果email变量没有被定义则$email"$email""$email"""$email将被输出为:$email"$email""$email"""$email注意:VTL中未被定义的变量将被认为是一个字符串,所以以下例子:#set( $foo = “gibbous” )$moon = $foo的输出结果是:$moon = gibbous现在你已经对reference比较熟悉了,你可以将他们高效的应用于你的template了。

相关文档
最新文档