2012-10-26 70 views
2

我有困難得到ScriptBundle正常工作(如果這是應該在所有的工作)。我正在試圖做的是作爲一個依賴再添束(jQuery的)我的包,像這樣:ScriptBundle依賴性

bundles.Add(new ScriptBundle("~/js/myscripts") 
        .Include("~/js/jquery", 
          "~/Content/scripts/myscript.js")); 

~/js/jquery是jQuery的包的「名」(虛擬路徑),登記爲(之前我的依賴包):

bundles.Add(new ScriptBundle("~/js/jquery") 
        .Include("~/Content/scripts/jquery-{version}.js")); 

當我在我看來做@Scripts.Render("~/js/myscripts"),只有myscript.js呈現到HTML。如果我從一個在束物理的名稱,現有一個改變jQuery的虛擬路徑,它的工作原理:

bundles.Add(new ScriptBundle("~/js/myscripts") 
        .Include("~/Content/scripts/jquery-{version}.js", 
          "~/Content/scripts/myscript.js")); 

而且,在視圖中做@Scripts.Render("~/js/jquery"),工作。它只是引用不存在的另一個ScriptBundle的不存在的虛擬路徑(名稱)。這應該工作嗎?如果不是,我想知道我可以在哪裏發佈錯誤報告,說如果不支持這種情況,這種情況應該會引發異常。如果支持,它說什麼,爲什麼它不工作?

回答

1

由你有你的依賴性都去把你的佈局(圖)你對此有何評論後

@Scripts.Render("~/js/jquery") 
@Scripts.Render("~/js/myscripts") 

更新:

您不能嵌套包,那是你不能包括在捆綁包中,在創建父包時,該虛擬路徑很可能不可用。

通常我有一個單獨的jQuery束(包括其他一些不常改變的js)反正再一個其它JS束的一切。適用於瀏覽器緩存。

在一個側面說明,有你看着requireJS,這是不是真的需要,如果要捆綁一切,但它確實使你的js文件更好地記錄,因爲它使明確的依賴性

+0

我不希望兩個條目在我的視圖中,我想要一個,用於'〜/ js/myscripts'。這是可能的,如果我包含'物理路徑到jQuery,但不包括'包含'虛擬路徑(用於jQuery的包名稱)。 –

+0

啊,我幫你。這不是捆綁的問題。您不能在捆綁包中包含捆綁包路徑。這不是我的電話,但是當/如果你用微軟登錄這個,我會說這是一個功能請求。通常我有一個單獨的jquery包(包括一些其他不經常變化的js),然後是其他js包。適用於瀏覽器緩存。在一個側面說明,有你看着requireJS,這是不是真的需要,如果要捆綁一切,但它確實使你的js文件更好地記錄,因爲它使依賴關係明確。 – dove

+0

這是一個不受支持的方案不會拋出異常時的錯誤。虛擬路徑的所有其他錯誤拼寫,對不存在的文件的引用等都會拋出異常,所以這也應該如此。是啊,我使用RequireJS在我的很多項目,但是這一次是如此簡單,我想擁有jQuery和捆綁成一個單一的'.js'文件我自己的JS。 –

1

它不支持,但你可以拿出自己的解決方案,這一點,對不對?例如:

var jquery = new[] { "~/Content/scripts/jquery-{version}.js" }; 
var myScripts = jquery.Concat(new[] { "~/Content/scripts/myscript.js" }).ToArray(); 
var myOtherScripts = myScripts.Concat(new[] { "~/Content/scripts/otherscript.js").ToArray(); 

bundles.Add(new ScriptBundle("~/js/jquery").Include(jquery)); 
bundles.Add(new ScriptBundle("~/js/myscripts").Include(myScripts)); 
bundles.Add(new ScriptBundle("~/js/other").Include(myOtherScripts));