2011年7月13日 星期三

用Solr產生頁面 - XSL vs. VTL

當我們今天從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不易

沒有留言:

張貼留言