資源預(yù)覽需要最新版本的Flash Player支持。
您尚未安裝或版本過(guò)低,建議您
戶(hù)手冊(cè) 1 關(guān)于 。本指南中有很多示例展示了用 是所有的 感謝選擇 2 它允許任何人僅僅簡(jiǎn)單的使用模板 語(yǔ)言( 引用由 能力遠(yuǎn)不止 點(diǎn)開(kāi)發(fā)這個(gè)領(lǐng)域,例如,它可以從模板( 生 也可以被當(dāng)作一個(gè)獨(dú)立工具來(lái)產(chǎn)生源代碼和報(bào)告,或者作為其他系統(tǒng)的集成組件使用。 發(fā)架構(gòu)提供模板服務(wù)( 供一個(gè)模板服務(wù)的方式允許一個(gè) 型進(jìn)行開(kāi)發(fā)。 3 設(shè)你是一家專(zhuān)門(mén)出售 泥漿( 的在線(xiàn)商店的頁(yè)面設(shè)計(jì)人員,讓我們暫且稱(chēng)它為“在線(xiàn) 你們的業(yè)務(wù)很旺,客戶(hù)下了各種類(lèi)型和數(shù)量的 們都是通過(guò)輸入用戶(hù)名和密碼后才登陸到你的網(wǎng)站,登陸后就允許他們查看訂單并購(gòu)買(mǎi)更多的 在,一種非常流行的 在打折銷(xiāo)售。另外有一些客戶(hù)規(guī)律性的購(gòu)買(mǎi)另外一種也在打折但是不是很流行的 于購(gòu)買(mǎi)的人并不多所以它被安置在頁(yè)面的邊緣。所有用戶(hù)的信息都是被跟蹤并存放于數(shù)據(jù)庫(kù) 中的,所以某天有一個(gè)問(wèn)題可能會(huì)冒出來(lái):為什么不使用 為一個(gè) 希望每個(gè)用戶(hù)登陸時(shí)都擁有自己的頁(yè)面。 你會(huì)見(jiàn)了一些公司內(nèi)的軟件工程師,你發(fā)現(xiàn)他們每個(gè)人都同意客戶(hù)應(yīng)該擁有具有個(gè)性化的信息。那讓我們把軟件工程師應(yīng)該作的事情發(fā)在一邊,看一看你應(yīng)該作些什么吧。 你可能在頁(yè)面內(nèi)嵌套如下的 #$ # $$ ) $$ # 紹 在為 面結(jié)合動(dòng)態(tài)內(nèi)容提供最容易、簡(jiǎn)單和簡(jiǎn)潔的方法。即使有一點(diǎn)或者沒(méi)有編程經(jīng)驗(yàn)的頁(yè)面設(shè)計(jì)者也可以很快能為頁(yè)面提供動(dòng)態(tài)內(nèi)容。 用( 來(lái)在 個(gè)變量就是一種類(lèi)型的 量是某種類(lèi)型的 可以指向 者從當(dāng)前頁(yè)面內(nèi)定義的 面是一個(gè) 可以被嵌套到 # $a = “) 和所有的 句) 一樣,這個(gè) 字符開(kāi)始并且包含一個(gè) 令) : 一個(gè)在線(xiàn)用戶(hù)請(qǐng)求 你的頁(yè)面時(shí), 字符,然后確定哪些是 些不需要 #字符后緊跟一個(gè) 令) : 個(gè) 用括號(hào)封閉) —— 一個(gè)方程式分配一個(gè)值給變量。變量被列在左邊,而它的值被列在右邊,最后他們之間使用=號(hào)分割。 在上面的例子中,變量是 $a,而它的值是 其他的 樣以 $字符開(kāi)始,而值總是以雙引號(hào)封閉。 記住以下的規(guī)則: 使用 $字符開(kāi)始的 用 #字符開(kāi)始的 5 一旦某個(gè)變量被分配了一個(gè)值,那么你就可以在 件的任何地方引用它。在下面的例子中,一個(gè)值被分配給 $在其后被引用。 # $ “) 上面的實(shí)現(xiàn)結(jié)果是 在頁(yè)面上打印“ 為了使包含 們鼓勵(lì)你在新行開(kāi)始每個(gè) 管你不是必須這么作。 6 注釋 可以用注釋加入描述性文本,他們并不在模板引擎中輸出。注釋可以有助于你的記憶或者想其他人解釋你的 單行注釋以 ##開(kāi)始,并在本行結(jié)束。 ## is a 如果需要加入多行注釋?zhuān)⒉恍枰?加入很多的單行注釋。 多行注釋?zhuān)?#*開(kāi)始并以 *#結(jié)束可以處理這種情況。 #* a t *# 還有第三種注釋?zhuān)?文檔格式) ,可以用來(lái)存儲(chǔ)諸如文檔作者、版本信息等。 #** is a be to as @ @# 7 引用的類(lèi)型 量 (屬性 (方法(作為一個(gè)使用 和你的工程師必須就 便你可以在你的 有關(guān)引用的所有 參數(shù)都處理為字符串對(duì)象。 to a is as a 果有一個(gè)對(duì)象 $么 方法將這個(gè)對(duì)象轉(zhuǎn)型為 量 量的簡(jiǎn)略標(biāo)記是有一個(gè)前導(dǎo) "$"字符后跟一個(gè) 識(shí)符( 成。一個(gè) a .. A .. Z)。剩下的字符將由以下類(lèi)型的字符 組成: a .. z, A .. Z) 字母 0 .. 9) 數(shù)字 "-") 連字符 "_") 下劃線(xiàn) 下面是一些有效的變量引用: $ 如 $量可以從模板的 可以從 如,如果 所有 $者,如果包含下面的語(yǔ)句: #$ ") 緊跟指令后的所有 $ 性 用的第二種元素是屬性,而屬性具有獨(dú)特的格式。屬性的簡(jiǎn)略標(biāo)記識(shí)前導(dǎo)符 $后跟一個(gè) 識(shí)符,在后跟一個(gè)點(diǎn)號(hào) (".")最后又是一個(gè) 識(shí)符。這是一些有效的示例: $兩種含義。它可以表示:查找 象 可以表示調(diào)用 方法。當(dāng)你的頁(yè)面被請(qǐng)求時(shí), 后返回適當(dāng)?shù)闹怠? 法 個(gè)方法就是被定義在 的一段代碼,并且它有完成某些有用工作的能力,例如一個(gè)執(zhí)行計(jì)算和判斷條件是否成立、滿(mǎn)足等。方法是一個(gè)由 $開(kāi)始并跟隨 般還包括一個(gè) 如: $ $ $“) $[“ “ “ ) 前兩個(gè)例子 $和 $看起來(lái)挺像 上面的屬性 $果你覺(jué)得他們之間有某種聯(lián)系的話(huà),那你是正確的。 性可以作為 法的縮寫(xiě)。 $性和使用$方法具有相同的效果。如果可能的話(huà)使用屬性的方式是比較合理的。屬性和方法的不同點(diǎn)在于你能夠給一個(gè)方法指定一個(gè)參數(shù)列表。 我們或許希望方法可以為我們放回屬于太陽(yáng)系的行星的名字,喂養(yǎng)我們的蚯蚓,或者從相冊(cè)中返回一張照片。下面只有長(zhǎng)的那個(gè)標(biāo)記是可以工作的方法: $[" " " ) ## 不能將參數(shù)列表傳遞給 $ ## 定我意思是 $ $") ## 不能傳遞一個(gè)參數(shù)列表 用符 式如下: 變量 ${ 屬性 ${ 方法 ${} 非正式 格式更見(jiàn)常用,但是有時(shí)還是使用正是格式比較適合。例如:你希望通過(guò)一個(gè)變量 $is a $本來(lái)變量是 $在卻變成了 $樣 不知道您到底要什么了。所以,應(yīng)該使用正是格式書(shū)寫(xiě): is a ${在 例如: 當(dāng)頁(yè)面的 量 $沒(méi)有值,這時(shí)你 肯定是希望它能夠顯示一個(gè) $樣的字段。那么使用 這樣文本框的初始值就不會(huì)是 “是空值了。 正式和 下面這樣: 8 和 #來(lái)幫助它工作,所以如果要在 節(jié)將討論 $字符。 幣字符 在 為 TL 義有效地 \”作為逃逸符。 例如: #$ “) $$\$\\$ $果 $$\$\\$被 $$\$\\$意: 以以下例子: #$ “) $ $輸出結(jié)果是: $ 在你已經(jīng)對(duì) 較熟悉了,你可以將他們高效的應(yīng)用于你的如: $ ## is ## is $ # is # is {但是,注意 如: $方法,而不是 10 而達(dá)到你所期望的顯示效果。 包括 ## #######萬(wàn)不得已的時(shí)候,不要在頁(yè)面視圖自己聲明 就是盡量少使用 #時(shí)候我們需要在頁(yè)面中顯示序號(hào),而程序?qū)ο笾杏譀](méi)有包含這個(gè)序號(hào)屬性同,可以自己定義。 #如: # $ “) # $ $ 賦值左側(cè)的( 須 是一個(gè)變量或者屬性 側(cè)( 以是以下類(lèi)型中一種: 變量 量引用) 面字符竄) 屬性 性引用) 方法 法引用) 面數(shù)字) 組列表) 下面是應(yīng)用各種類(lèi)型的 # $ $ ##變量 $“ ) ## $ $ ##屬性 $ $) ##方法 $ 123 ) ## $ [“ , $“ ] ) ##意:最后一個(gè)例子的取值方法為: $) # $ $ 1 ) # $ $1 ) # $ $ $ # $ $ $ 如果你的 一個(gè) 處理將比較特殊:它將指向一個(gè)已經(jīng)存在的 對(duì)初學(xué)者來(lái)講可能是比較費(fèi)解的。例如: # $ $ ) of $ $ ) of 果 $ )返回一個(gè)“ 而 $ )返回的是 顯示的結(jié)果如下: of is he of is 看下面的例子: #$ [" " ) #$ #$ $) #$ 上面的例子中,程序?qū)⒉荒苤悄艿母鶕?jù) $$to 它不能被設(shè)置回 打印的結(jié)果將顯示兩次查詢(xún)結(jié)果都成功了,但是實(shí)際上有一個(gè)查詢(xún)是失敗的。 為了解決以上問(wèn)題我們可以通過(guò)預(yù)先定義的方式: #$ [“ “ ) #$ #$ #$ $$ ) #$ 面字符串 當(dāng)你使用 # # $ “) # $ “) # $ “$) $面這段代碼的 輸出結(jié)果為: 是,當(dāng) 將不被解析: # $ “) $ $ ‘$) 結(jié)果: 面這個(gè)特性可以通過(guò)修改 件語(yǔ)句 if/一個(gè) 面被生成時(shí)使用 if 果條件成立的話(huà)可以在頁(yè)面內(nèi)嵌入文字。例如: # $ #例中的條件語(yǔ)句將在以下兩種條件下成立: $它的值為 里需要注意一點(diǎn): 僅能夠包含對(duì)象,所以當(dāng)我們說(shuō)“ 實(shí)際上代表的時(shí)一個(gè) 象。即便某個(gè)方法返回的是一個(gè) 如果條件成立,那么 # #如: #$#$= 10 ) #$= 6 ) #o #意 這里的 數(shù)字是作為 比較的――其他類(lèi)型的對(duì)象將使得條件為 是與 同它使用“ ==”來(lái)比較兩個(gè)值,而且 系、邏輯運(yùn)算符 如: # $ “) # $ “) # $= $ In it’s t #be #面是一些例子: ## $& $ ND ## R # $| $ R ## !$ #較 種是: ## 判斷是否為 # 推薦使用 ##!## 判斷是否非 $另外一種是: # " $ -> -> -> $ -> $$ -> -> " $ -> $$ -> $環(huán) 例子: # $ $#次循環(huán) $ $配給 $象,并且可以通過(guò)變量被引用。例如:如果 $一個(gè) 且這個(gè)產(chǎn)品的名字可以通過(guò)調(diào)用他的 方法得到。 現(xiàn)在我們假設(shè) $一個(gè) 果你希望得到它的 # $ ) $> $ #便你可以像下面這樣作: # $ $量的名字是 認(rèn)的名字,件來(lái)改變它。默認(rèn)情況下,計(jì)數(shù)從“ 1”開(kāi)始,但是你可以在 1”還是從“ 0”開(kāi)始。下面就是文件中的配置: # of of 1 10.5 含 #引入文件的內(nèi)容將不會(huì)通過(guò)模板引擎被 了安全的原因,被引入的本地文件只 能在 # “) 如果您需要引入多個(gè)文件,可以用逗號(hào)分隔就行: # “ “ “) 在括號(hào)內(nèi)可以是文件名,但是更多的時(shí)候是使用變量的: # “ $ 10.6 析 # #“) 就像 ##受一個(gè)變量而不是一個(gè)模板。任何由 #向的模板都必須包含在 錄下。與 #同的是, #能指定單個(gè)對(duì)象。 你可以通過(guò)修改 件的 值來(lái)控制一個(gè) 默認(rèn)值是 10。 #如:如果 # $ 8 ) # “) 那么在 可以包含如下 $ $ $ 1 ) # $ 0 ) #“) #ll #顯示結(jié)果為: 8 7 6 5 4 3 2 1 0 10.7 #它應(yīng)用于 # #TL 如: # d ) #上面的例子中 d,然后你就可以在任何 #d() 當(dāng)你的 換為 #d()。 每個(gè) 甚至 0個(gè)參數(shù),雖然定義時(shí)可以隨意設(shè)置參數(shù)數(shù)量,但是調(diào)用這個(gè) 面是一個(gè)擁有兩個(gè)參數(shù)的 個(gè)參數(shù)是 # # $ $用 # # $ [ “ “ “ “ “] ) # $ “) #$ 經(jīng)過(guò)以上的調(diào)用將產(chǎn)生如下的顯示結(jié)果: 以在 板內(nèi)實(shí)現(xiàn)行內(nèi)定義( 也就意味著同一個(gè) 義一個(gè)可以被所有模板共享的 減少了在一大堆模板中重復(fù)定義的數(shù)量、節(jié)省了工作時(shí)間、減少了出錯(cuò)的幾率、保證了單點(diǎn)修改。 上面定義的 #$定義在一個(gè) 在 里,所以這個(gè) 可以被多次應(yīng)用并且可以應(yīng)用于不同的目的。例如下面的調(diào)用: # $ [ “ “ “ “ “] ) # $ “#) #$ 上面 以下任何元素作為參數(shù): 何以 $開(kāi)頭的 字面字符竄 字面數(shù)字 [1… 者 [$.$對(duì)象數(shù)組: [“ a” ,” b” ,” c” ] 將一個(gè) 注意 就意味著參數(shù)的值在每次 執(zhí)行時(shí)才會(huì)被產(chǎn)生。這個(gè)特性使得你可 以將一個(gè)方法調(diào)用作為參數(shù)傳遞給 每次 行時(shí)都是通過(guò)這個(gè)方法調(diào)用產(chǎn)生不同的值來(lái)執(zhí)行的。例如: # a ) $a $a $a #$ ) 執(zhí)行的結(jié)果是: 方法被執(zhí)行了三次。 如果你不需要這樣的特性可以通過(guò)以下方法: # $ $ ) # $ 意更多的內(nèi)容可以看 件中的 個(gè)以逗號(hào)分隔的模板庫(kù)列表。默認(rèn)情況下, 可以通過(guò)配置這個(gè)屬性來(lái)指定自己的模板庫(kù)。 件中的 性:有兩個(gè)可選的值 者 過(guò)它可以確定 否可以被定義在。默認(rèn)值是 允許設(shè)計(jì)者在他們自己的模板中定義 個(gè)屬性允許使用者確定 比如在 默認(rèn)情況下,此值為 樣就阻止本地 性也是有 個(gè)可選值,默認(rèn)是 的作用是用于確定你 句話(huà)說(shuō),如果這個(gè)屬性設(shè) 置為 個(gè) 可以使用此設(shè)置實(shí)現(xiàn)一個(gè)奇妙的 門(mén): a a of M be by M by 中的 認(rèn)值為 設(shè)置為 何在 對(duì) 不會(huì)永久的影響內(nèi)容。 件中的 性控制的自動(dòng)加載。默認(rèn)是 設(shè)置為 于一個(gè) 檢查原始庫(kù)是否發(fā)生了變化,如果變化將重新加載它。這個(gè)屬性使得你可以不用重新啟動(dòng) 器而達(dá)到重新加載的效果,就像你使用 個(gè)屬性可以使用的前提就是 存是 態(tài)( 注意這個(gè)屬性實(shí)際上是針對(duì)開(kāi)發(fā)而非產(chǎn)品的。 就是說(shuō),你的 #聲明應(yīng)該出現(xiàn)在使用 特 別要注意的是,如果你試圖 #一個(gè)包含 #的模板。因?yàn)?#發(fā)生在運(yùn)行期,但是解析器在 M 元素,這樣 #M 聲明將不按照預(yù)期的樣子工作。為了得到預(yù)期的結(jié)果,只需要你簡(jiǎn)單的使用 得 啟動(dòng)時(shí)加載你的 11 TL be \”號(hào),使 用方式跟 ## #“ ) 注釋行 ) #“) ## \#“) #“) \#“) ## \\# “) \\#“) 在對(duì)在一個(gè) TL 如在一個(gè) )。下面是 # $ 果 $出將是: 果 $沒(méi)有輸出。使用逃逸符將改變輸出??紤]一下下面的情況: \# $ #在無(wú)論 $出結(jié)果都是: # $ 實(shí)上,由于你使用了逃逸符, $逃逸符前使用逃逸符是合法的,例如: \\# $ \#上程序的顯示結(jié)果為: \ 但是如果 $么將沒(méi)有輸出。( 書(shū)上說(shuō)會(huì)沒(méi)有輸出,但是我覺(jué)得應(yīng)該還有有“ \”字符被輸出。) 12 盡管在此用戶(hù)手冊(cè)中 下所示: # $ [ “ “ “ “] ) # $ $是像下面這種寫(xiě)法也是可以的: [“$10 ”a )#a a #上面的代碼可以被改寫(xiě)為: $ [“$10 ,”a ) # $a $a #或者 [“$10 ,”a ) # $a $a #這兩種的輸出結(jié)構(gòu)將一樣。 13 其他特性和雜項(xiàng) 13.1 在模板中可以使用 :加、減、乘、除 。 # $ $ 3 ) # $ $ 4 ) # $ $ 6 ) # $ $ 2 ) 當(dāng)執(zhí)行除法時(shí)將返回一個(gè) 余數(shù)你可以使用 %來(lái)得到: # $ $ 5 ) 在 能使用像 2,,1,2,不能使用其它類(lèi)型 數(shù)據(jù)。當(dāng)一個(gè)非整型的對(duì)象被使用時(shí)它將被 且將以 于處理一個(gè)整型數(shù)組它是很有用的, [n.m和 子: # $1.) $# $2.) $# $ [0.) # $i $i #[1.上面四個(gè)例子的輸出結(jié)果為: 1 2 3 4 5 2 1 0 2 0 1 [1.注意: 進(jìn)階:轉(zhuǎn)義和 ! 當(dāng)一個(gè) ”分隔時(shí),并且在它之前有逃逸符時(shí), 意這種方式與標(biāo)準(zhǔn)的逃逸方式時(shí)不同的。對(duì)照如下: # $ “) 特殊形式標(biāo)準(zhǔn)格式 $\!!$$\!{$!{\$!$!\\!\!$!{\$!{$\\\!\\!\$!{\4 記 Q: a or M as an to a 是否可以使用指令 者 為另一個(gè) 參數(shù) ? 例如: # #“) ) A: 不可以。一個(gè) 但是,還是有些事情你可以作的。最簡(jiǎn)單的方式就是使用雙引號(hào): # $ “#‘)” ) # $ 上面的格式也可以縮寫(xiě)為一行: # “#‘) ”) 請(qǐng)注意,后面這個(gè)例子中,參數(shù)是在 部被求值,不是在調(diào)用的那一層次上。換句話(huà)說(shuō),被傳入的 參數(shù)是整個(gè)被傳入的,并且在傳入的 以我們可以這樣做: # $ # $ “) $ $ ‘) #“# ) 輸出結(jié)果為: 住 數(shù)的傳遞是 如: # $ ) 以上代碼將導(dǎo)致 方法兩次調(diào)用,而不是一次。為了避免這種現(xiàn)象的出現(xiàn),我們可以按照下面的方式執(zhí)行: # $ $ ) # $ Q: ?是否可以通過(guò) #注冊(cè) A: 目前, 須在第一次被模板調(diào)用前被定義。這就意味著你的 #聲明應(yīng)該出現(xiàn)在使用 如果你試圖 #一個(gè)包含 # 模板,這一點(diǎn)是需要牢記的。因?yàn)?#發(fā)生在運(yùn)行期,但是解析器在 M 元素的元素是否是一個(gè) 素,這樣 #M 聲明將不按照預(yù)期的樣子工作。為了得到預(yù)期的結(jié)果,只需要你簡(jiǎn)單的使用 得 Q: is 什么是 動(dòng)載入 ? 這是一個(gè)屬性,在開(kāi)發(fā)時(shí)使用,而不 是 運(yùn)行時(shí): 認(rèn)值為 當(dāng)設(shè)置為 同 性設(shè)置為 里 是使用的資源載入器的名稱(chēng),比如 ' , 擎在你創(chuàng)建 樣你就不必將其導(dǎo)入 擎(或者應(yīng)用程序)中,或者用其他手段來(lái)使其自動(dòng)重新載入。 下面是一個(gè)簡(jiǎn)單的設(shè)置配置組合: 意在生產(chǎn)狀態(tài)(運(yùn)行時(shí))不要使其打開(kāi)。 15 開(kāi)發(fā)人員最常問(wèn)的問(wèn)題是我如何作字符拼接?在