<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      K_Reverter的網頁開發記錄

      要么不做,要么就當作藝術品來做!

      導航

      Jla框架介紹(三) 資源引用和Sprite模式

          前面的一篇文章,我介紹了Jla框架的代碼單元的規范,為什么需要有這樣的規范?最主要的目的還是將能夠將代碼和功能進行有條理的拆分,讓每個代碼單元僅僅關注自身的邏輯,這樣就可以提高代碼的重用性。

       

          可是要真的實現讓每個代碼單元能夠心無旁騖的開始自身邏輯的實現,僅僅有一個框架規范還遠遠不夠,我們必須對一些大部分代碼單元都會關心的問題提供一個合理的解決方案,保證代碼單元不再為這些事情而操心,其中最重要的兩個解決方案是資源管理和配置管理,關于配置的管理,我會在下一篇文章之中講到,本文將首先講到資源管理。

       

          在本框架之中,每個程序是以JavaScript為主體的,但是單靠JavaScript,肯定不能實現那些豐富多彩的應用,對圖片、CSS或者其他資源的調用是很平常的內容,也就是說,一個程序單元(或者說一個類)除了有一個Js文件以外,還有可能有一系列的圖片、CSS片段文件甚至音樂視頻等多方面的內容,這些(統稱為資源文件)和腳本文件合在一起,才組合成為一個程序單元,如果要考慮代碼的重用和獨立性的問題,這些資源文件也應該考慮進去。 

       

          對于資源的調用,我設計了這樣的一個解決方案:

          1.開發的時候,假設資源文件和類文件一樣,都是分目錄存放的, 例如對于命名空間Com.Test.ClassA,類文件的路徑為:

        workspace/src/Com/Test/ClassA.js

              假設類ClassA調用了一個圖片test.png,則應該放在:

            workspace/resource/Com/Test/ClassA/test.png 

              這樣,每個類都有自己的資源目錄,將自己的多個資源放在目錄下即可,也不用擔心和其他的文件名沖突的問題

          2.假如類ClassA之中想要調用自己的資源,當然不能直接寫路徑(如果直接寫路徑,基本上不能保證代碼部署后或者移動之后還能執行),建議ClassA在定義的時候require Js.Resource類,然后調用該類的靜態方法getUrl,例如:

       

        1      Jla.require(["Js.Resource","namespace.ClassB"],2,function(Resource,ClassB)

       2      {
       3          //code of ClassD start
       4          function App()
       5          {
       6              var img=document.createElement("img");
       7              img.src=Resource.getUrl(App,"test.png");
       8          }
       9          App.prototype.onClick=function()
      10          {
      11              Jla.require(["namespace.ClassC"],1,function(ClassC)
      12              {
      13                  //調用ClassC.完成點擊之后執行的操作
      14              })
      15          }
      16          //code of ClassD End
      17          Jla.set("namespace.ClassD",App);
      18      })

       

       

          上面的代碼之中,創建了一個圖片對象,并將URL設置為資源文件夾之中的test.png,getUrl函數的第一個參數是類或者類的命名空間,一般來講,我們并不希望一個類太關心自己的命名空間是什么,所以,建議還是使用自己的類,第二個參數就是資源的名稱,一般也就是對應的文件名,根據這兩個參數,Resource類會計算出這個資源文件的URL地址并返回,這樣代碼單元不再需要關心自己的資源文件具體部署在什么位置。

          在代碼最終部署的時候,資源的訪問路徑和組織形式可能和開發的模式有所不同,這種情況下,只需要在發布的時候通過更改Resource類的配置或者重寫getUrl的方法,就可以讓每個代碼單元正常訪問到自己的資源,各個代碼單元不需要做任何更改。另外,可以根據代碼單元的require關系,完全不需要的代碼單元,其對應資源也不用發布到部署環境之中。

          以上就是針對資源的解決方案,該解決方案將代碼單元和資源之間的關系簡單化,帶來很多方便。

       

          下面說說帶來的一個問題,就是Sprite,因為按照現有的框架,我希望能將不同的代碼單元的資源分目錄存放,可是現在很多網站上,將多個圖片(很有可能是毫無關聯)的圖片組合到一張圖片上,這樣,似乎就很難對代碼進行有效的拆分,針對這個問題,我提出如下的解決方案:

       

          首先,我認為,Sprite不應該是開發時就需要考慮的內容,而是部署時需要考慮的內容,因此,我不建議各個代碼單元在開發的時候就使用合并起來的圖片,這樣會大幅度的減少代碼重用性,最好在開發的時候,圖片還是一個個的分離的圖片,每個代碼單元調用自己的資源圖片,哪怕代碼單元內部,也不建議使用Sprite技術,因為我說過:Sprite不應該是開發時就需要考慮的內容,而是部署時需要考慮的內容

          現在假設各個程序單元開發的時候都沒有考慮過Sprite的問題,怎么實現Sprite呢?我想通過這樣一個類似于重寫的技術:

          1.假設每個代碼單元,在顯示圖片的時候,都使用一個類Js.Html.Image,這個類提供了create(用來根據URL創建一個圖片實例),setSrc(用來更改一個圖片實例的src),setBackground(用來設置背景圖)三個方法,這三個方法包含了所有圖片的基本使用

          2.Js.Html.Image還提供了一個addSprite方法,用于通知Image類,哪些圖片被整合到了另一張圖片的什么地方,例如:

      1         Image.addSprite("img/image.png",[
      2             {rect:[0,256,300,44],path:Resource.getUrl("Test.Class1","test.png")},
      3             {rect:[0,212,300,44],path:Resource.getUrl("Test.Class2","test.png")},
      4         ],{size:{x:300,y:300}})

       

           這樣,Image類記錄下這個信息,在創建Test.Class1的test.png圖片的時候,最終實際上會去img/image.png的某一塊上去獲取圖片顯示,這樣就實現了圖片的Sprite方案。

           這樣做,我覺得比一般的Sprite方案有更多優點:

          1.和開發過程基本無關,使開發過程不受影響,要知道網上討論Sprite技術的時候,一致表明缺點是使開發和維護復雜化

          2.假如Sprite圖片做了調整,只需要改上面的配置即可,不需要到處調整。

          3.將完全無關的功能組合在一起也完全不是什么問題 

       

          這樣就實現了這種模式下的Sprite技術,本來應該將這個關鍵的Image對象源碼展示一下的,但是這個還沒有完善,而且,本系列文章主要是介紹新框架的思路,源碼并不是特別重要,而且,一般寫一個出來也不會太復雜吧。

           

       

      posted on 2011-01-17 12:05  K_Reverter  閱讀(1618)  評論(5)    收藏  舉報

      主站蜘蛛池模板: 亚洲人成电影网站色mp4| 国产中文字幕在线一区| 欧美人妻一区二区三区| 亚洲欧洲一区二区精品| 精品久久久久久无码免费| 日韩av裸体在线播放| 欧美丰满熟妇性xxxx| 天堂mv在线mv免费mv香蕉| 精品中文人妻中文字幕| 日本视频一两二两三区| 久青草视频在线观看免费| 国产又黄又爽又不遮挡视频| 国产精品日韩av一区二区| 韩国精品久久久久久无码| AV无码免费不卡在线观看| 无码人妻精品一区二区在线视频| 日韩成人福利视频在线观看| 呼和浩特市| 国产成人午夜福利院| AV最新高清无码专区| 国产初高中生粉嫩无套第一次| 亚洲av成人一区国产精品| 国产色悠悠在线免费观看| 国产精品亚洲精品日韩已满十八小| 亚洲av成人午夜福利| 国产成人午夜精品永久免费 | 久久久久人妻精品一区三寸| 亚洲一区二区三区自拍偷拍| 精品日韩亚洲av无码| 久久精品国产亚洲av高| 亚洲成人资源在线观看| 亚洲中文字幕无码av永久| 性欧美欧美巨大69| 欧美丰满熟妇乱XXXXX网站| 久久人人97超碰精品| 人妻少妇偷人无码视频| 一本av高清一区二区三区| 国产熟妇另类久久久久久| 亚洲色大成网站WWW永久麻豆| 99在线国内在线视频22| 国产情侣草莓视频在线|