<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

    資源文件管理

    Posted on 2010-01-17 17:51 canonical 閱讀(1346) 評論(0)  編輯  收藏 所屬分類: Witrix開發平臺
        html主要通過內置的<script>,<link>, <img>等標簽引入外部的資源文件,一般的Web框架并沒有對這些資源文件進行抽象,因此在實現組件封裝時存在一些難以克服的困難。例如一個使用傳統JSP Tag機制實現的Web組件中可能用到js1.js, js2.js和css1.css等文件,當在界面上存在多個同樣的組件的時候,可能會生成多個重復的<script>和<link>標簽調用,這將對頁面性能造成嚴重的負面影響。資源管理應該是一個Web框架的內置組成部分之一。在Witrix平臺中,我們主要借助于tpl模板引擎來輸出html文本, 因此可以通過自定義標簽機制重新實現資源相關的html標簽, 由此來提供如下增強處理功能:

    1. 識別contextPath
       tpl模板中的所有資源相關標簽都會自動拼接Web應用的contextPath, 例如當contextPath=myApp時
       <script src="/a.js"></script> 將最終輸出 <script src="/myApp/a.js" ...>

    2. 識別重復裝載
       <script src="a.js" tpl:once="true"></script>
       tpl:once屬性將保證在頁面中script標簽實際只會出現一次.

    3. 識別組件內相對路徑
      開發Web組件時,我們希望所有資源文件都應該相對組件目錄進行定位,但是直接輸出的<script>等標簽都是相對于最終的調用鏈接進行相對路徑定位的. 例如在page1.jsp中調用了組件A, 在組件A的實現中, 輸出了<script src="my_control.js"></script>
     我們的意圖一般是相對于組件A的實現文件進行定位, 而不是相對于page1.jsp進行定位. tpl模板引擎的相對路徑解析規則為永遠相對于當前文件進行定位. 例如
      <c:include src="sub.tpl" />
    在sub.tpl中的所有相對路徑都相對于sub.tpl文件進行定位.

    4. 編譯期文件有效性檢查
       在編譯期, tpl引擎會檢查所有引入的資源文件的有效性. 如果發現資源文件丟失, 將直接拋出異常. 這樣就不用等到上線后才發現文件命名已修改等問題.

    5. 緩存控制
      瀏覽器缺省會緩存css, js等文件, 因此系統上線后如果修改資源文件可能會造成與客戶端緩存不一致的情況. 一個簡單的處理方式是每次生成資源鏈接的時候都拼接文件的修改日期或者版本號, 這樣既可利用客戶端緩存, 又可以保證總是使用最新版本. 例如
      <script src="a.js"></script>將會輸出 <script src="/myApp/myModule/a.js?344566" ...>

    6. 字符集選擇
      為了簡化國際化處理, 一般提倡的最佳實踐方式是堅持使用UTF-8編碼. 但是很多情況下可能使用系統內置的GBK編碼會更加方便一些, 另外集成一些既有代碼時也存在著不同字符集的問題. 在Witrix平臺中, 所有輸出的資源標簽都會標明對應的字符集, 如果沒有明確設置就取系統參數中的缺省字符集.
     例如 <script src="a.js"></script> 將會輸出 <script ... charset="GBK"></script>

    7. 缺省theme支持
      為了支持多種頁面風格, 往往不是簡單的替換css文件即可實現的, 它可能意味著整個組件的實現代碼的更換. Witrix平臺中通過一系列缺省判斷來簡化這一過程. 例如如下代碼表明如果設置了ui_theme系統參數, 并且對應的特殊實現存在, 則使用特殊實現, 否則系統缺省實現.
      <c:include src="${cp:ui_theme()}/ctl_my_ctl.tpl" >
        <c:include src="default/ctl_my_ctl.tpl" />
      </c:include>
    主站蜘蛛池模板: 亚洲成人精品久久| 亚洲精品中文字幕无码蜜桃| 亚洲视屏在线观看| 亚洲视频在线免费观看| 久久亚洲精品成人777大小说| 免费观看成人久久网免费观看| 亚洲色婷婷一区二区三区| a视频在线免费观看| 亚洲国产精品嫩草影院在线观看| a级毛片高清免费视频就| 国产亚洲成AV人片在线观黄桃 | 国产18禁黄网站免费观看| 亚洲爆乳无码精品AAA片蜜桃| 免费在线观看的黄色网址| xxxxxx日本处大片免费看| 国产黄片不卡免费| 亚洲人成网亚洲欧洲无码久久| 99精品视频在线观看免费| 亚洲国产一区二区a毛片| 999国内精品永久免费观看| 亚洲精品9999久久久久无码| 免费人成无码大片在线观看| 成人毛片100免费观看| 亚洲国产精品久久久久网站| 亚洲免费视频观看| 亚洲AV色欲色欲WWW| 国产亚洲AV夜间福利香蕉149| 久久久久久AV无码免费网站| 国产人成亚洲第一网站在线播放| 亚洲国产精品嫩草影院久久 | 特级做a爰片毛片免费看| 亚洲福利视频导航| 免费看美女被靠到爽的视频| 巨胸喷奶水视频www免费视频| 久久久久亚洲av无码专区导航| 免费的一级黄色片| 国产好大好硬好爽免费不卡| 四虎亚洲精品高清在线观看| 不卡精品国产_亚洲人成在线| 99国产精品永久免费视频| 一级毛片试看60分钟免费播放|