<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 閱讀(1345) 評論(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>
    主站蜘蛛池模板: 久久国产高潮流白浆免费观看| 丰满妇女做a级毛片免费观看 | 亚洲国产精品综合一区在线 | 亚洲va成无码人在线观看| 最近免费字幕中文大全视频| 亚洲AV人人澡人人爽人人夜夜| 99免费在线视频| 久久亚洲AV午夜福利精品一区| 久久久久国产免费| 亚洲天堂一区二区三区| 成人免费a级毛片| 亚洲精品无码成人| 免费h黄肉动漫在线观看| 视频免费1区二区三区| 久久精品国产亚洲一区二区三区 | 亚洲视频一区二区三区| 午夜福利不卡片在线播放免费| 亚洲人成在线免费观看| 青青草国产免费久久久91| 美女被艹免费视频| 亚洲国产另类久久久精品黑人 | 在线观看免费人成视频色9| 亚洲日韩中文字幕一区| 亚洲欧洲中文日韩久久AV乱码| 四虎影视无码永久免费| 久久亚洲AV成人无码电影| 女人18一级毛片免费观看| 羞羞视频在线观看免费| 久久精品国产亚洲AV网站 | 亚洲免费精彩视频在线观看| 亚洲人成电影在线观看网| 亚洲Av无码乱码在线znlu| 久久99精品免费视频| 亚洲色无码专区一区| 国产亚洲精品无码拍拍拍色欲| 3d动漫精品啪啪一区二区免费 | 日本一区二区在线免费观看| 亚洲成av人片天堂网| 久久综合AV免费观看| 成年女人A毛片免费视频| 亚洲一区二区三区免费观看|