<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 241,  comments - 116,  trackbacks - 0

    smarty4j是一個smarty for java的模板引擎,該引擎是將smarty模板從php上移植過來,需要asm-3.0.jar。

    smarty4j將文本解析成語法樹,然后根據語法樹生成Java Code的字節碼,相當于一個基于JVM的smarty語法的編譯器。語法樹的生成采用左序遍歷的方式依次生成,大致的語法結點包含語句與表達式兩大基本 類型,語句結點能保證JVM的語句棧在執行完畢后沒有新壓入的數據,而表達式結點將產生一個數據。人人

    一般的結構,最頂層是一個文檔結點,內部可以由三種結點組成,分別是文本結點、函數結點與輸出結點

    • 文檔結點
      • 文本結點
      • 函數結點
        1. 行函數結點
        2. 塊函數結點
      • 輸出結點

    其中,輸出結點是輸出一個對象的內容,因此由對象表達式與變量調節器結點組成,對象表達式主要是郵字符串表達式、NULL表達式與變量表達式組成

    • 輸出結點
      • 對象表達式
        1. 字符串表達式
        2. NULL表達式
        3. 變量表達式
      • 變量調節器結點

    變量表達式又包含相關的List或者Map擴展信息 除此外,表達式結點還有浮點表達式結點、整數表達式結點與布爾表達式結點,只要是表達式結點對象,就支持在壓棧過程中對這三種數值之間進行轉化。

    執行優化

    smarty4j的塊函數結點將整個文檔分隔成代碼塊,分析每個代碼塊是否有變量的回寫操作,如assign等。如果不存在,則會在棧內存中自動緩 存相關的節點讀取操作,第二次需要讀取時,是直接從棧內存中讀取,減少了分析和從容器中提取數據的問題。特別是針對循環操作時緩存指針變量,能大幅度提高 執行的速度。 smarty4j會自動識別條件分支中的“短路”位置,一個布爾表達式結點的真或假的結果成立后,可以直接跳到if等函數指定的出口點,而不需要逐級去驗 證,對于復雜的布爾表達式,能小幅度的提高執行速度。

    功能擴展

    smarty4j的語法擴展分為幾個層次:

    1.直接用java代碼實現新的函數與變量調節器

    繼承org.lilystudio.smarty4j.statement包下的 AbstractLineFunction,AbstractBlockFunction,AbstractCustomModifier三個類可以分別 實現單行函數、區塊函數與變量調節器的java代碼實現,新的類名以$符號開頭,放置在 org.lilystudio.smarty4j.statement.function與 org.lilystudio.smarty4j.statement.modifier包下可以被直接引用,否則需要在配置文件中定義函數的自動搜索 包。這種方式面向普通的java開發人員女裝品牌排行榜

    2.實現自己特點的函數語法

    繼承org.lilystudio.smarty4j.statement包下的AbstractFunction、 AbstractModifier或第一點中提供的接口,通過重新實現syntax或process方法來實現函數特有的語法或特定的處理方式,如 if,literal,break等均是代表。使用非標準的smarty參數語法應當慎重,一般由架構人員來評估后由普通java開發人員進行。

    3.實現自己的函數與變量調節器語法轉換節點 

    繼承org.lilystudio.smarty4j.statement包下的AbstractFunction或 AbstractModifier,或者實現IFunction,IBlockFunction,IModifier接口,通過重寫parse方法來生成 jvm匯編代碼。這種方式需要對jvm匯編了解程度較高,而且需要經常對每一個分支的測試才能使用,否則會出現虛擬機的類加載異常或者是jvm匯編校驗異 常。

    posted on 2011-04-22 09:30 墻頭草 閱讀(2769) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    人人游戲網 軟件開發網 貨運專家
    主站蜘蛛池模板: 日韩在线视频播放免费视频完整版| 香蕉免费一区二区三区| 国产免费牲交视频免费播放| 中文字幕无码免费久久| 亚洲最大av无码网址| 一本到卡二卡三卡免费高 | 亚洲精品精华液一区二区| 日韩精品免费一级视频| 亚洲欧洲中文日产| 99精品国产免费久久久久久下载| 亚洲一区二区三区国产精品无码| 日韩吃奶摸下AA片免费观看| 亚洲区小说区图片区QVOD| 免费无码一区二区三区蜜桃| 亚洲精品线在线观看| 日本黄网站动漫视频免费| 国产成人精品日本亚洲专一区| 成人无遮挡毛片免费看| 亚洲A∨无码一区二区三区| 亚洲啪啪免费视频| 亚洲影院天堂中文av色| 日产国产精品亚洲系列| 中文字字幕在线高清免费电影| 国产免费爽爽视频免费可以看| 老司机亚洲精品影院无码| 91热成人精品国产免费| 综合偷自拍亚洲乱中文字幕| 亚洲日韩中文字幕日韩在线| 久久午夜夜伦鲁鲁片无码免费| 国产网站在线免费观看| 精品丝袜国产自在线拍亚洲| 在线观看免费亚洲| 亚洲色一区二区三区四区| 亚洲国产成人精品女人久久久 | 老司机亚洲精品影视www| 美女被cao网站免费看在线看| 亚洲中文字幕人成乱码| 亚洲日韩中文在线精品第一| 亚洲免费福利视频| 有色视频在线观看免费高清在线直播| 亚洲人成在线电影|