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