2012-05-24 59 views
1

擴展Velocity語法時被認爲是最佳實踐。可用的兩種機制是指令和宏。兩者看起來同樣強大。指令要求實際開發Java代碼,而宏只是Velocity語法的片段。速度宏指令與指令

指令是因爲它們是用Java編寫的,你不必解析包含宏中的額外速度語法的優勢。它使Velocity的擴展更加正式,並且阻止了大量不受控制的添加。

在對宏有利的一面,我認爲這是是非常靈活的,並允許大量重複使用的共同模式的應用程序的開發過程中發現的。

所以,你在這方面的想法將是最歡迎的。

回答

2

實際上還有第三種方法。但首先...

指令是做事情或模板的一部分,或者要求他們周圍的模板的意識的東西。例如,您可以創建一個指令,以某種方式轉換它所包含的部分的輸出。他們以全球性,永遠在線的方式提供這種以模板爲中心的功能。

宏的設計不是功能。他們最好用於重複內容或標記。它們是爲了防止你用Java代碼輸出任何標記語言(或什麼),或者一遍又一遍地重複VTL的各個部分。

第三種方式稱爲「工具」。 VelocityTools項目中有許多可以用作示例的項目,更不用說爲真正簡單的工具管理提供支持代碼。無論如何,工具主要用於訪問或操作數據。不要創建數字格式的指令或宏。使用工具。工具爲模板中難以使用的庫和API提供了VTL友好的界面。它們可以被訪問控制,並且以指令和宏永遠不可能的方式進行限定。

所有這三個是非常有用的,對於不同的事情。總之:

  • 指令是最適合操縱AST或模板部分的輸出
  • 宏最好不重複自己或讓標記潛入Java代碼
  • 工具是最好的訪問和操縱在模板
+0

許多感謝的選項很好的總結數據。我仔細看了一下Velocity Tools,還有很多功能。謝謝 – user1414289