摘要:的簡(jiǎn)介是一個(gè)基于的模板引擎。使用,也可以寫成。所以,應(yīng)該使用規(guī)范的格式書(shū)寫現(xiàn)在知道變量是而不是。如當(dāng)頁(yè)面中包含,如果對(duì)象有值,將顯示的值,如果不存在對(duì)象同,則在頁(yè)面中將顯示字符。
velocity的簡(jiǎn)介
Velocity是一個(gè)基于java的模板引擎(template engine)。它允許任何人僅僅簡(jiǎn)單的使用模板語(yǔ)言(template language)來(lái)引用由java代碼定義的對(duì)象,這樣的話其實(shí)在前后端分離而言又是一個(gè)較為合理的可選方案,
Velocity也可以配合其他的語(yǔ)言來(lái)完成使用,Velocity.js就是不錯(cuò)的選擇,這樣的話可以依靠nodejs和瀏覽器環(huán)境來(lái)實(shí)現(xiàn)模版的功能。
什么是Velocity模版?
Velocity模版可以是任意的文本文件,只要里面包含專門的模板語(yǔ)言(VTL)標(biāo)記,就可以被Velocity模板引擎解析;
Velocity模版的工作機(jī)制:
Velocity可以通過(guò)獲取Java對(duì)象的函數(shù)返回值、屬性值,用于替換模板文件中的VTL變量標(biāo)記,從而生成新的文件,模板文件的擴(kuò)展名可以是".vm"、".htm"、".html"、".asp"、".sql",等等任語(yǔ)法簡(jiǎn)介
大部分的模版引擎都是有自己的書(shū)寫方式,不過(guò){}這個(gè)大括號(hào)基本都是他們的通用符號(hào),這里介紹語(yǔ)法的順序是:
變量定義、使用
控制語(yǔ)句 if for之類
指令
宏
變量變量是任何語(yǔ)言都不可缺少的;
變量定義和使用變量的定義和賦值基本方法:#set (<$變量名> = <"變量值">)
#set ($name = "Sankhya") ##字符串
#set ($age = 30) ##數(shù)字
#set ($list = ["Sankara", ${name}, "Shankara"]) ##數(shù)組
#set ($dict = ["A":"va", "B":234, "C":${value}]) ##HashTable
在雙引號(hào)之間的字符串將被Velocity引擎解釋和重新解釋;在velocity中使用$2.5這樣的貨幣標(biāo)識(shí)是沒(méi)有問(wèn)題得的,因?yàn)関elocity中的變量總是以一個(gè)大寫或者小寫的字母開(kāi)始的。
使用:
${name} ,也可以寫成:$name。提倡用前面的寫法。
例如:你希望通過(guò)一個(gè)變量$vice來(lái)動(dòng)態(tài)的組織一個(gè)字符串。
Jack is a $vicemaniac.
本來(lái)變量是$vice現(xiàn)在卻變成了$vicemaniac,這樣Veloctiy就不知道您到底要什么了。所以,應(yīng)該使用規(guī)范的格式書(shū)寫 : Jack is a ${vice}maniac
現(xiàn)在Velocity知道變量是$vice而不是$vicemaniac。
例如:
#set ($desc = "${name} is ${age} years old;")
執(zhí)行這條語(yǔ)句之后,輸出$desc的值將是:Sankhya is 30 years old;
同時(shí)還需要注意:
(1).Velocity模版中的變量是弱類型的;等號(hào)"="右邊的值可以是引用、字符串、數(shù)字、Array、Vector、HashTable或表達(dá)式;
(2).如果等號(hào)"="右邊的值是null,則左邊的變量不會(huì)被賦值,且仍然保留以前的值;
(3).模板中沒(méi)有被定義的變量將被認(rèn)為是一個(gè)字符串;
(4).模板引擎不會(huì)將reference解釋為對(duì)象的實(shí)例變量;如:$foo.Name將被解釋為對(duì)象Foo的getName()方法,而不是Foo對(duì)象的Name實(shí)例變量;$foo.getBar()就等價(jià)于$foo.Bar;
注釋:
單行注釋使用“##”開(kāi)頭就可: ## 這好似注釋
多行注釋 #* 多行注釋 *#
文檔注釋: #** 文檔編寫 **#
控制語(yǔ)句 if條件控制語(yǔ)句#if () ##statement segment #elseif ( ) ##statement segment #else ##statement segment #end
作為condition,Velocity引擎也支持關(guān)系運(yùn)算符(>、>=、<、<=、!=)和邏輯運(yùn)算符(&&->AND、||->OR、!->NOT);
"!"用來(lái)強(qiáng)制把不存在的變量顯示為空白。
如當(dāng)頁(yè)面中包含$msg,如果msg對(duì)象有值,將顯示msg的值,如果不存在msg對(duì)象同,則在頁(yè)面中將顯示$msg字符。這是我們不希望的,為了把不存 在的變量或變量值為null的對(duì)象顯示為空白,則只需要在變量名前加一個(gè)“!”號(hào)即可。
如:$!msg
#foreach ($element in $list) ##your statement $velocityCount #end指令
#parse和#include指令:
這兩者都是導(dǎo)入本地模板文件;
#parse指令只能導(dǎo)入一個(gè)文件,同時(shí),被導(dǎo)入的文件的內(nèi)容將會(huì)被Velocity模板引擎解析,意思就是把被導(dǎo)入的文件的內(nèi)容copy到當(dāng)前文件中;該指令也可以被遞歸調(diào)用;
#include指令可以導(dǎo)入一個(gè)或多個(gè)文件,當(dāng)導(dǎo)入多個(gè)文件時(shí),可以用逗號(hào)分隔;而且,被導(dǎo)入的文件的內(nèi)容不會(huì)被Velocity模版引擎解析;
例如:
#include ("one.gif", "two.txt", "three.htm") ##不會(huì)被模版引擎解釋;
#include (${file1}, ${file2}, ${file3}) ##不會(huì)被模版引擎解釋;
#parse ("server.conf") ##會(huì)被模版引擎解釋;
#stop停止執(zhí)行模板引擎并返回,把它應(yīng)用于debug是很有幫助的;
Velocity中的轉(zhuǎn)義字符也是使用符號(hào)"";這就意味著執(zhí)行""將會(huì)輸出"",而執(zhí)行"$"將會(huì)輸出"$",執(zhí)行"#"會(huì)輸出"#";
參考:http://bdxnote.blog.163.com/b...
http://www.blogjava.net/alexw...
http://www.cnblogs.com/likwo/...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/83031.html
摘要:的簡(jiǎn)介是一個(gè)基于的模板引擎。使用,也可以寫成。所以,應(yīng)該使用規(guī)范的格式書(shū)寫現(xiàn)在知道變量是而不是。如當(dāng)頁(yè)面中包含,如果對(duì)象有值,將顯示的值,如果不存在對(duì)象同,則在頁(yè)面中將顯示字符。 velocity的簡(jiǎn)介 Velocity是一個(gè)基于java的模板引擎(template engine)。它允許任何人僅僅簡(jiǎn)單的使用模板語(yǔ)言(template language)來(lái)引用由java代碼定義的對(duì)象,...
摘要:包括以下工具在過(guò)渡和動(dòng)畫中自動(dòng)應(yīng)用可以配合第三方動(dòng)畫庫(kù),如在過(guò)渡鉤子函數(shù)中使用直接操作可以配合使用第三方動(dòng)畫庫(kù),如在這里,我們只會(huì)講到進(jìn)入離開(kāi)和列表的過(guò)渡。不僅可以進(jìn)入和離開(kāi)動(dòng)畫,還可以改變定位。 概述 Vue在插入、更新或則移除DOM時(shí),提供多種不同方式的應(yīng)用過(guò)渡效果。包括以下工具: *在CSS過(guò)渡和動(dòng)畫中自動(dòng)應(yīng)用class *可以配合第三方CSS動(dòng)畫庫(kù),如Animate.css *...
Python Pandas的主要左右是解決大量的數(shù)據(jù),快速的對(duì)數(shù)據(jù)去進(jìn)行批量的處理,大大提高工作的效率。那么,里面的loc和iloc函數(shù),具體是怎么進(jìn)行使用呢?怎么知道每個(gè)函數(shù)的基本用法呢?下面小編就給大家詳細(xì)的解答下?! ? loc和iloc的含義 loc表示location的意思;iloc中的loc意思相同,前面的i表示integer,所以它只接受整數(shù)作為參數(shù)?! ?用法 import...
我們知道在 Vue3 中有兩個(gè)非常常用的響應(yīng)式 API:reactive 和 ref。這樣就可以變成我們想要追蹤的數(shù)據(jù)變成響應(yīng)式。 知道嗎?在使用時(shí)一直被告知 ref 用于創(chuàng)建基礎(chǔ)類型的響應(yīng)式,也可以創(chuàng)建引用類型的響應(yīng)式。而對(duì)于引用類型,底層也是轉(zhuǎn)換為 reactive 來(lái)進(jìn)行響應(yīng)式處理。那既然這樣為撒還需要 reactive ,全部使用 ref 不就行了嗎? 雖然 ref 創(chuàng)建的響應(yīng)式數(shù)...
閱讀 2440·2021-11-11 16:54
閱讀 2676·2021-09-26 09:47
閱讀 4014·2021-09-08 09:36
閱讀 2761·2021-07-25 21:37
閱讀 948·2019-08-30 15:54
閱讀 2563·2019-08-30 14:22
閱讀 3275·2019-08-30 13:57
閱讀 2682·2019-08-29 17:17