2013-10-13 48 views
0

縮小的文件是否可以使用.NET縮小/捆綁機制來創建一個包,將在子目錄縮小的文件中搜索:.NET縮小 - 尋找一個子目錄

未壓縮:

/css/jquery-ui.css 
/css/fullcalendar.css 
/css/bootstrap.css 

精縮:

/css/minified/jquery-ui.min.css 
/css/minified/fullcalendar.min.css 
/css/minified/bootstrap.css 

我有大約12個獨立的樣式表和20+腳本,我已經和與加倍的壓縮版本。我想讓他們分開只是爲了一點組織。這可能嗎?

回答

1

在Asp.Net MVC中完成捆綁和縮小的方式是通過運行時的動態處理。當你創建一個bundle時,它可以被注入任何Asp.Net頁面。如果您處於調試模式,捆綁器將以完整格式發送捆綁包中的每個項目,以便於調試。如果您處於發行模式,捆綁器會自動將捆綁中的單個文件的內容解析爲單個內存文件流,然後將其縮小。沒有必要在項目中明確地包含css/javascript文件的完整版本和縮小版本。然而,由於每ASP.Net Documentation

捆紮框架如下幾種常見的約定,如:

  • 選擇「.min」文件發佈時「FileX.min.js」和「FileX.js 「存在。
  • 選擇非「.min」版本進行調試。
  • 忽略僅由IntelliSense使用的「-vsdoc」文件(如jquery-1.7.1-vsdoc.js)。

基本上,如果你有兩個完整和精縮版,那麼框架將喜歡使用的預精縮版在涅槃文件本身。

在發佈模式下加載頁面時,捆綁和縮小的效果表現爲整個捆綁包的單個css或js文件流,通過對服務器的單個調用表示,例如, http://localhost/MvcBM_time/bundles/AllMyScripts?v=r0sLDicvP58AIXN_mc3QdyVvVj5euZNzdsa2N1PKvb81

實際上,將創建一個與捆綁包名稱相匹配的唯一路由(本例中爲AllMyScripts)。查詢字符串v有一個值標記,它是用於緩存的唯一標識符。只要包不變,ASP.NET應用程序就會使用此令牌請求AllMyScripts包。如果包中的任何文件發生更改,ASP.NET優化框架將生成一個新的令牌,以確保瀏覽器對該包的請求將獲得最新的捆綁包。

至於包含來自多個目錄的文件,最簡單的方法是使用通配符模式匹配。 Include方法中指定的虛擬路徑和IncludeDirectory方法中的搜索模式可以接受一個*通配符作爲最後一個路徑段中的前綴或後綴。搜索字符串不區分大小寫。 IncludeDirectory方法可以選擇搜索子目錄。

+0

我知道所有這一切。如果它們存在,我只想讓捆綁器使用我的.min文件,但我希望它們位於主文件夾的另一個目錄中。 – Dismissile

+0

是的,正如我在最後所說的那樣,'IncludeDirectory'方法有搜索子目錄的選項。例如'bundles.Add(new StyleBundle(「〜/ allStyles」)。IncludeDirectory(「〜/ Styles」,「* .css」,true));'將所有內容添加到'/ Styles'目錄中,它的子目錄 – Claies

+0

我想那種得到我想要的。 – Dismissile