使用T4模板合並js文件


不知道該怎么表達,或許直接貼圖貼代碼更好

前因:在第一個使用angularjs的項目中我將所有的controller寫到一個文件里面,深知維護起來那滋味,所以再次使用angularjs的時候,我便把所有的controlle、directive、factory給提取到相應的文件夾下面,以便於維護。此時js這么多表示很無奈。

blob.png

當然,解決辦法很多,搜索:angularjs 按需加載 site:cnblogs.com 會有很多介紹就不多說了。

下面說說我的解決方案

如題,利用T4模板來合並;模板的寫法因需求而定

舉個栗子:我將的所有的controller代碼都放在了controller文件夾中

app.js:

defaultCtr.js:

隨着控制器的不斷增加,js文件也就不斷的增多,我在 controller文件夾同級目錄 建了一個如下所示的T4模板(ps:關於此模板的創建http://www.yimo.link/Article/13.html

 

<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".js" #>

<# string dirPath=this.Host.ResolvePath("controller"); #>
<#
    foreach(var file in new DirectoryInfo(dirPath).EnumerateFiles())
    {    
        using (StreamReader reader = new StreamReader(file.FullName))
        {
            WriteLine(reader.ReadToEnd());
        }
    }
#>

這個模板的作用就是:獲取controller目錄下的所有文件 讀取內容並輸出到生成的js文件中

結果:將生成的js文件替代之前的defaultCtrl.js、artListCtrl.js即可實現優化。

同理可得,利用T4模板來合並一些js文件豈不快哉。

嘗試過使用Bundle來合並,但是似乎只能合並且壓縮。如何只合並不壓縮還請知道的人指定。

 

個人之見,若有不足,望能給予指點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM