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

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

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

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    [導入]witrix平臺中的ajax支持

    Posted on 2006-02-22 20:36 canonical 閱讀(597) 評論(0)  編輯  收藏 所屬分類: Witrix開發平臺

    web程序需要完成  html <--> java 之間的映射,在界面越來越復雜,越來越多變的今天,這項工作也變得越來越困難。按照級列設計理論的觀點,我們應該去尋求一些中間的過渡步驟。在 witrix平臺中,tpl模板引擎正扮演了這種中間角色。通過tpl模板我們實現了如下映射路徑

    html <--> tpl <--> java

    注 意到這里html與tpl之間,以及tpl與java之間的映射都不是trivial的同構關系,而是都可能存在著復雜的運算過程,從而實現了html與 java映射過程中復雜性的分解與均攤。tpl與java之間的關聯主要通過EL(expression language)表達式來完成,而html與tpl的映射則主要通過自定義標簽(tag)機制。
    注意到tpl所提供的中間層具有獨立的重大意 義,它并不是臆造的或者是簡單的技術驅動的結果。實際上,在web開發中除了java結構與html結構之外還存在著第三種結構,即用戶眼中的界面結構, 本來它與html所描述的結構是簡單的一一對應的,但是隨著界面技術的發展,html的描述能力逐漸被耗盡,成為了internet時代的"匯編語言"。 現在一個簡單的頁面片斷就可能對應著大量html代碼,因而喪失了"所寫即所見"的簡單性。tpl通過強大的抽象能力在某種程度上恢復了程序員對于界面表 現結構的直觀控制能力,并在一定程度上保留了html所見即所得的特性。

    在witrix平臺中因為存在著tpl這一強大的抽象層,使得我們對于ajax的支持可以采取更加靈活的方式。
    ajax(Asynchronous JavaScript + XML)的標準結構是
    html <--> js <==> xml <==> java

    在 這種結構中通過xml信道的只是數據,而界面的表達邏輯與展現邏輯完全由js來控制。這種結構發展的一個極端是所有的界面展現結構都由 javascript動態構造出來,而完全喪失了html靜態描述的特點,喪失了所見即所得的設計。與直接實現html<-->java之間 的映射情況類似,直接實現 html <--> js之間的映射也是困難的,盡管dom模型的支持可能使得js映射的難度要低于java映射。

    在witrix平臺中ajax的方案為
    html <--> js <==> tpl <--> java

    即tpl取代了ajax標準方案中xml的位置,使得映射過程的復雜性得以分散化。

    結合jsplet框架的拉模式(pull mode),我們定義了如下ajax訪問接口
    js.ajax.load({request='objectName=/@Test&objectEvent=query',tpl:'/test.tpl:partA',targetId:'testDiv'});

    1。 遠程服務請求就是一段普通的http post request, 避免了額外的xml編碼解碼需求。
    2。請求到的數據先由tpl文件來進行處理。注意到這里tpl文件的url分成兩部分,前一部分是tpl文件的虛擬路徑,而 :后面的部分,即partA指出請求的是該tpl文件內的partA部分,而不是整個tpl文件。
    3。返回的html結果被填充到targetId所指定的html元素中。

    test.tpl文件的內容
    <html>
    <body>

    <tpl:define id="partA">
    <img tpl:tag="ui:EditTable" />
    </tpl:define>

    <div id="testDiv">
    <img tpl:tag="ui:ViewTable" />
    </div>

    </body>
    </html>

    tpl具有強大的結構構造能力,在這里我們以非常小的代價實現了tpl片斷的定義,例如test.tpl中的partA部分。這里通過id訪問tpl片斷就如同js中通過id來訪問html片斷一樣。
    最后提一個很重要的思想:大量零碎的代碼片斷需要集中存放,否則人的精力會被耗散。一個反例就是struts中的action, 明明只干那么點事,偏偏要占據一個單獨的java文件,占據大量單獨的配置條目,最終給程序員帶來很大的困擾。
    主站蜘蛛池模板: 亚洲AV无码一区二区三区电影 | 久久久久亚洲AV成人无码| 国产精品成人亚洲| 国产免费黄色大片| 美女黄频免费网站| 亚洲天堂在线视频| 高清永久免费观看| 亚洲视频在线一区| 国产成人免费高清激情明星| 亚洲av午夜精品无码专区| 日本免费网站视频www区| 亚洲中文字幕一二三四区| 永久免费看mv网站入口| 免费一级毛片在线播放放视频| 亚洲精品tv久久久久久久久久| 91视频免费观看高清观看完整| 久久精品国产亚洲AV果冻传媒| 亚洲最大免费视频网| 亚洲丶国产丶欧美一区二区三区| 国产免费观看a大片的网站| 久久久精品视频免费观看| 亚洲国产精品国自产拍电影| 免费阿v网站在线观看g| 国产成人亚洲精品91专区高清 | 四虎永久免费影院| 久久久久久久久久免免费精品| 亚洲AV电影院在线观看| 成年女人免费视频播放体验区| 黄色免费网站在线看| 久久国产精品亚洲一区二区| 无码人妻久久一区二区三区免费丨| 久久精品熟女亚洲av麻豆| 久久久青草青青亚洲国产免观 | 一级毛片**免费看试看20分钟 | 国产99视频精品免费视频76| 亚洲AV无码国产精品麻豆天美 | 激情吃奶吻胸免费视频xxxx| 亚洲成av人片天堂网| 在线播放免费播放av片| 久久国产福利免费| 亚洲日韩看片无码电影|