<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

    HTML模型增強(qiáng)

    Posted on 2009-05-30 00:44 canonical 閱讀(2712) 評論(2)  編輯  收藏 所屬分類: Witrix開發(fā)平臺
      html最早的設(shè)計(jì)目標(biāo)只是作為某種多媒體文檔展現(xiàn)技術(shù),其設(shè)計(jì)者顯然無法預(yù)料到今天Web應(yīng)用的蓬勃發(fā)展,一些設(shè)計(jì)缺陷也就難以避免。特別是html規(guī)范中缺乏對于復(fù)雜交互式組件模型的支持,直接導(dǎo)致企業(yè)應(yīng)用的前臺開發(fā)困難重重。AJAX技術(shù)可以看作是對這種困境的一種改良性響應(yīng),它試圖通過javascript語言在應(yīng)用層創(chuàng)建并維護(hù)一系列復(fù)雜的交互機(jī)制。很多完善的ajax框架走得相當(dāng)遙遠(yuǎn),最終基本將html作為一種底層“匯編”語言來使用。例如,一個(gè)很整齊美觀的類Excel表格可能是由一個(gè)個(gè)div拼接而成,與html原生的table元素已經(jīng)沒有任何關(guān)系。
     
       Witrix平臺中對于前臺html模型也作了一定的增強(qiáng),但基本的設(shè)計(jì)思想是盡量利用原生控件,并盡量保持原生控件內(nèi)在的數(shù)據(jù)關(guān)系,而不是重新構(gòu)建一個(gè)完整的底層支撐環(huán)境。采用這種設(shè)計(jì)的原因大致有如下幾點(diǎn):
    1. 前臺技術(shù)目前競爭非常激烈,我們優(yōu)先選擇的方式是集成第三方組件,盡量保持原生環(huán)境有利于降低集成成本。
    2. 通過javascript構(gòu)造的控件可能存在性能瓶頸和其他瀏覽器內(nèi)在的限制。例如一般Ajax框架提供的Grid控件都無法支撐大量單元格的顯示。
    3. Witrix平臺的tpl模板技術(shù)可以非常方便的生成html文本,并提供強(qiáng)大的控件抽象能力,因此在前臺動(dòng)態(tài)創(chuàng)建并組織界面元素在Witrix平臺中是一種不經(jīng)濟(jì)的做法。
    4. Witrix平臺提供的分解機(jī)制非常細(xì)致,存儲于不同地方的不同來源的代碼會(huì)在不同的時(shí)刻織入到最終的頁面中,基于原生環(huán)境有利于降低平臺快速演進(jìn)過程中的設(shè)計(jì)風(fēng)險(xiǎn)。

       Witrix平臺中對于html模型的增強(qiáng)主要關(guān)注于以最少的代碼實(shí)現(xiàn)界面控件與業(yè)務(wù)邏輯的自然結(jié)合。基本結(jié)構(gòu)包括:
    1. 通過ControlManager對象在前臺建立一種container結(jié)構(gòu),統(tǒng)一管理控件的注冊和獲取。js.makeControl(elmOrId)返回特殊注冊的控件對象或者根據(jù)原生html元素生成一個(gè)包裝對象。
    2. 通過js.getWxValue(elm)和js.setWxValue(elm,value)這兩個(gè)函數(shù)統(tǒng)一對控件的值的存取過程。
    3. 通過js.regListener(elm,listenerFunc)統(tǒng)一管理控件之間的相關(guān)觸發(fā),實(shí)現(xiàn)控件之間的相互監(jiān)聽。當(dāng)js.setWxValue(elm,value)被調(diào)用時(shí),注冊在ControlManager中的listenerFunc將被調(diào)用。
    4. stdPage.setFieldValue(fieldName,value)和stdPage.getFieldValue(fieldName,value)統(tǒng)一針對業(yè)務(wù)字段的值的存取過程,這里fieldName對應(yīng)于實(shí)體上的業(yè)務(wù)字段名。
    5. 通過ajax.addForm(frmId)等函數(shù)統(tǒng)一前臺提交參數(shù)的提取過程,通過stdPage.buildAjax()等函數(shù)統(tǒng)一后臺服務(wù)的調(diào)用方式。
    6. 通過stdPage對象統(tǒng)一封裝業(yè)務(wù)場景中的"常識"。
    基于以上一些基礎(chǔ)機(jī)制,Witrix平臺即可提供一些復(fù)雜的業(yè)務(wù)組件封裝。例如<input name="productCode" onkeypress="stdPage.keyPressToLoadRefByCode({objectName:'SomeProduct',queryField:'productCode'})" .../>通過簡單的調(diào)用一個(gè)js函數(shù)即可實(shí)現(xiàn)如下功能:
    a. 在文本框中輸入回車的時(shí)候自動(dòng)提交到后臺查找對應(yīng)產(chǎn)品代碼的產(chǎn)品,并更新前臺多個(gè)相關(guān)字段的值
    b. 如果沒有查找到相應(yīng)產(chǎn)品,則彈出對話框根據(jù)界面上已有的部分字段信息提示客戶添加新的產(chǎn)品信息。
    c. 如果找到多個(gè)對應(yīng)產(chǎn)品,則彈出列表允許客戶選擇其一。
    d. 具體的處理過程可以通過函數(shù)參數(shù)進(jìn)行精細(xì)的控制。
    在meta文件中,結(jié)合上下文環(huán)境中的元數(shù)據(jù)信息,我們在缺省情況下可以直接使用 <ds:LoadRefByCodeInputor objectName="SomeProduct" />標(biāo)簽,不需要任何其他附加參數(shù)。

       Witrix平臺中一般利用原生控件來保存數(shù)據(jù)值,而不是將數(shù)據(jù)保存在分離的js對象中。例如對于一個(gè)選擇控件,經(jīng)常要求選擇得到的是實(shí)體的id,而顯示在界面上的是某個(gè)其他字段的值。Witrix平臺中一般的實(shí)現(xiàn)結(jié)構(gòu)是
       <input type="hidden" name="${fieldName}" value="${entity[dsMeta.idField]}" id="${id}" textId="text_${id}" />
       <input type="text" value="${entity[dsMeta.nameField]}" id="text_${id}" />
    通過textId等擴(kuò)展屬性即可明確定義控件多個(gè)部分之間的關(guān)聯(lián)關(guān)系,同時(shí)保證控件的實(shí)現(xiàn)完全與html規(guī)范相兼容。
       Witrix平臺中目前使用的"標(biāo)準(zhǔn)化"的擴(kuò)展屬性有textId(對應(yīng)文本顯示控件的id), showName(某些無文字顯示的選擇控件需要保留顯示字段值), op(字段作為查詢條件提交時(shí)的比較算符),validator(字段值對應(yīng)的檢驗(yàn)函數(shù)),setWxValue/getWxValue(重定義控件值的存取行為),serializer(特殊處理前臺控件的提交參數(shù))等。擴(kuò)展屬性不僅可以引入說明信息,還可以引入豐富的控件行為。
      


    Feedback

    # re: HTML模型增強(qiáng)  回復(fù)  更多評論   

    2009-05-31 09:13 by 無量字幕
    不錯(cuò)。。

    # re: HTML模型增強(qiáng)  回復(fù)  更多評論   

    2009-05-31 09:13 by 樂蜂
    支持下博主
    主站蜘蛛池模板: 亚洲AV无码乱码国产麻豆穿越 | 精品亚洲成AV人在线观看| 高潮毛片无遮挡高清免费| 日韩一区二区在线免费观看 | 亚欧洲精品在线视频免费观看| 免费一级毛片不卡不收费| 国产AV无码专区亚洲AV琪琪| 国产精品国产午夜免费福利看| 美国毛片亚洲社区在线观看| 国产人成免费视频| 四虎国产精品永免费| 国产精品亚洲mnbav网站| 中文字幕一区二区三区免费视频| 亚洲无av在线中文字幕| 热re99久久6国产精品免费| 亚洲高清在线视频| 99久久99久久精品免费看蜜桃| 亚洲欧洲另类春色校园网站| 性盈盈影院免费视频观看在线一区| 亚洲av纯肉无码精品动漫| 国产黄色一级毛片亚洲黄片大全| a在线观看免费视频| 精品亚洲A∨无码一区二区三区| 日韩在线播放全免费| 亚洲爆乳大丰满无码专区| 亚洲女人被黑人巨大进入| 亚洲免费视频网站| 亚洲一区二区三区国产精华液| 无码国产亚洲日韩国精品视频一区二区三区 | www亚洲精品久久久乳| 中文字幕亚洲乱码熟女一区二区| 午夜爽爽爽男女免费观看影院| 自拍偷区亚洲国内自拍| 国产亚洲精久久久久久无码AV | 四虎永久在线精品免费网址| 特级aaaaaaaaa毛片免费视频| 亚洲A∨无码一区二区三区 | 成全视频免费高清| 三年片在线观看免费西瓜视频| 亚洲天堂一区二区三区| 亚洲黄黄黄网站在线观看|