當我們今天從Solr拿到一堆 doc,要產生頁面時有幾種作法:
- 用PHP或是Java去呈現-也就是目前的作法。
優點:
- 大家已經熟悉。
- 有許多Lib可以使用。
缺點:
- 很大一包,除了Solr還必須有Framework。
不過就像標題,今天的重點在VTL和XSL
所以當今天我們不想要這麼大一包時,就有下面兩種可能作法。
- 用XSL (EXtensible Stylesheet Language)
概念上就是指定哪種XML的Pattern去用某種Template。
可以將一份XML文件,套上XSL,呈現成你想要的樣子,通常是HTML。
由於Solr產生的格式預設就是XML,所以只要套上去就可以。
優點:
- 上手難度較低。
- 現有主流瀏覽器都支援,IE6以上 (最新到9)、FireFox3(最新到5)、Chrome、Opera9(最新到11)、Safari 3(最新到5)
- 只要有瀏覽器就可以測試,只要將XML內指定他的XSL。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="YOUR.xsl"?> - 不用了解Solr內的設定。
缺點:
- 需要自己組Query。
- 擁有的函式較少。
- 指定哪個區塊要用哪個模版較不直覺,需用到正規表示法。
- 做複雜的邏輯處理時,不能自己寫Fucntion來重複呼叫,會寫的很辛苦、又醜又長。
- 不能使用Map(Dictionary)、Array型態的變數。
- Debug不易
- 用VTL (Velocity Template Language)
概念上就是類似MVC的Framework架構中View的部分。會有個Layout,然後會有要顯示的資料給你,裡面可以決定哪個地方要放哪個View Block。只是每個View又同時是一個容器,裡面又可以再去指定裡面哪些地方要放哪個View Block。
有人說很類似php的 Smarty,但是沒用過,無從比較。
優點:
- 概念上類似Zend,使用起來較為直覺。
- 寫法簡潔,熟悉後開發速度較快。
- 可以自己寫函式來重複呼叫以及可使用Map、Array型態的變數,做複雜邏輯判斷較為方便。
- Solr的Velocity內已經寫好的一些組Query用的函式,可以直接拿來用。
- 似乎可以引用一些外部的函式?
缺點:
- 上手難度較高,有很多VTL規則需要熟悉。
- 需要了解Solr內的設定,而且頁面都會放在solr/conf/velocity/下,目前被寫死在Solr內 Orz...
- 需要有Solr才方便測試。
- Debug不易
沒有留言:
張貼留言