不知道該怎么表達,或許直接貼圖貼代碼更好
前因:在第一個使用angularjs的項目中我將所有的controller寫到一個文件里面,深知維護起來那滋味,所以再次使用angularjs的時候,我便把所有的controlle、directive、factory給提取到相應的文件夾下面,以便於維護。此時js這么多表示很無奈。
當然,解決辦法很多,搜索: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來合並,但是似乎只能合並且壓縮。如何只合並不壓縮還請知道的人指定。
個人之見,若有不足,望能給予指點。