摘要:的簡(jiǎn)介是一個(gè)基于的模板引擎。使用,也可以寫(xiě)成。所以,應(yīng)該使用規(guī)范的格式書(shū)寫(xiě)現(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ì)象,這樣的話(huà)其實(shí)在前后端分離而言又是一個(gè)較為合理的可選方案,
Velocity也可以配合其他的語(yǔ)言來(lái)完成使用,Velocity.js就是不錯(cuò)的選擇,這樣的話(huà)可以依靠nodejs和瀏覽器環(huán)境來(lái)實(shí)現(xiàn)模版的功能。
什么是Velocity模版?
Velocity模版可以是任意的文本文件,只要里面包含專(zhuān)門(mén)的模板語(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ū)寫(xiě)方式,不過(guò){}這個(gè)大括號(hào)基本都是他們的通用符號(hào),這里介紹語(yǔ)法的順序是:
變量定義、使用
控制語(yǔ)句 if for之類(lèi)
指令
宏
變量變量是任何語(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è)大寫(xiě)或者小寫(xiě)的字母開(kāi)始的。
使用:
${name} ,也可以寫(xiě)成:$name。提倡用前面的寫(xiě)法。
例如:你希望通過(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ū)寫(xiě) : 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模版中的變量是弱類(lèi)型的;等號(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;
注釋?zhuān)?/strong>
單行注釋使用“##”開(kāi)頭就可: ## 這好似注釋
多行注釋 #* 多行注釋 *#
文檔注釋?zhuān)?#** 文檔編寫(xiě) **#
控制語(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/70048.html
摘要:的簡(jiǎn)介是一個(gè)基于的模板引擎。使用,也可以寫(xiě)成。所以,應(yīng)該使用規(guī)范的格式書(shū)寫(xiě)現(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)畫(huà)中自動(dòng)應(yīng)用可以配合第三方動(dòng)畫(huà)庫(kù),如在過(guò)渡鉤子函數(shù)中使用直接操作可以配合使用第三方動(dòng)畫(huà)庫(kù),如在這里,我們只會(huì)講到進(jìn)入離開(kāi)和列表的過(guò)渡。不僅可以進(jìn)入和離開(kāi)動(dòng)畫(huà),還可以改變定位。 概述 Vue在插入、更新或則移除DOM時(shí),提供多種不同方式的應(yīng)用過(guò)渡效果。包括以下工具: *在CSS過(guò)渡和動(dòng)畫(huà)中自動(dòng)應(yīng)用class *可以配合第三方CSS動(dòng)畫(huà)庫(kù),如Animate.css *...
Python Pandas的主要左右是解決大量的數(shù)據(jù),快速的對(duì)數(shù)據(jù)去進(jìn)行批量的處理,大大提高工作的效率。那么,里面的loc和iloc函數(shù),具體是怎么進(jìn)行使用呢?怎么知道每個(gè)函數(shù)的基本用法呢?下面小編就給大家詳細(xì)的解答下。 1 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ǔ)類(lèi)型的響應(yīng)式,也可以創(chuàng)建引用類(lèi)型的響應(yīng)式。而對(duì)于引用類(lèi)型,底層也是轉(zhuǎn)換為 reactive 來(lái)進(jìn)行響應(yīng)式處理。那既然這樣為撒還需要 reactive ,全部使用 ref 不就行了嗎? 雖然 ref 創(chuàng)建的響應(yīng)式數(shù)...
閱讀 637·2023-04-26 01:53
閱讀 2762·2021-11-17 17:00
閱讀 2897·2021-09-04 16:40
閱讀 1999·2021-09-02 15:41
閱讀 848·2019-08-26 11:34
閱讀 1236·2019-08-26 10:16
閱讀 1344·2019-08-23 17:51
閱讀 834·2019-08-23 16:50