CommonTemplate是一個模板引擎,用于解釋CTL模板語言,可在多種運行時環境下使用;其主要目標是作為JSP,ASP.Net等的替代方案,以保證用簡單的語法,良好的結構,不混雜業務邏輯的方式書寫頁面;也可以作為動態文本生成工具,生成HTML、XML、Mail、Java源代碼或其它文本等。
二、CommonTemplate特性:
1.只有一個語法規則:$指令名{表達式},使用更簡單,更統一。
2.支持語法外套,可以在Dreamwear下正常使用WYSWYG,并且語法外套也是可擴展的。
3.微核理念,高度可擴展,除了核心API,其它邏輯相關處理都是外置的,包括所有指令及表達式,標準的 for, if, else 等指令,以及 + - * / 等表達式,均可被替換。
4.使用主控迭代器模式替代傳統的被動訪問器模式,引擎只負責將模板解析成指令樹,其它所有處理均由擴展指令自身完成,給擴展指令以最大的控制權。(類似于StAX與SAX的區別)
5.對已有不可變類(String,Number,Date等),屬性擴展,采用open class思想。(類似javascript的prototype)
6.支持宏引用及模板繼承,更有利于模板組件化。
7.內置的國際化支持,國際化信息處理更方便。
8.多種優化措施,性能更優:
(1) 采用針對特定語法寫的低級專有DFA解析器解析,試驗表明比使用通用抽象的BNF語法體系解析(Java中一般用JavaCC或AntLR)要快,因為BNF為了通用,考慮了太多因素,導致其效率降低,當然,BNF在處理復雜語法(比如要解析C/C++/Java等語法時)很有優勢,但CommonTemplate的語法非常簡單且統一,所以使用專有的低級解析器是比較好的選擇。
(2) 解析結果被表示成一個線程安全(不變類級)的指令樹,單個實例可以在多線程中任意重復使用,避免使用重復解析或克隆等性能損耗。
(3) 解析結果可以在內存中緩存起來,以減少解析次數及IO量,并且緩存策略是可擴展的。(已內置實現了NONE, STRONG, SOFT, FIFO, LRU, MRU, OSCACHE, EHCACHE等緩存策略)
本文由用戶 碼頭工人自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!