我在MVC4中嘗試捆綁和縮小,遇到了一個有趣的問題。 我正在使用Coffeescript,我想要一個像@Scripts.Render()
方法那樣工作的渲染助手。捆綁助手捆綁和拆分咖啡腳本
例如,假設我有這樣的捆綁配置:
new ScriptBundle("~/bundle/appfiles").Include(
"~/Scripts/app/sample.js",
"~/Scripts/app/myApp.js");
在CSHTML,當我做@Scripts.Render()
我得到基於web.config中的調試設置不同的結果。如果調試是真的,我得到每個文件一個腳本標記,否則我得到一個腳本標記,返回捆綁和縮小的js。這可以。
讓我們現在假設我想對我的咖啡文本做同樣的事情。我創建這樣的捆綁產品:
new Bundle("~/bundle/appfiles", new CoffeeBundler(), new JsMinify()).Include(
"~/Scripts/app/sample.coffee",
"~/Scripts/app/myApp.coffee");
現在的問題是,如果我使用@Scripts.Render()
我得到的,在調試,每個文件一個腳本,但這是在所有沒有改變一段時間。唯一使用我能做到的是:
<script type="text/javascript" src="@(BundleTable.Bundles.ResolveBundleUrl("~/bundle/appfiles"))"></script>
但這種意願,即使是在調試模式下,一切都捆綁在一起,然後縮小,這當然不是我想要的。
我試圖創建一個類似於腳本的幫助器Coffee.Render()
,但它使用了System.Web.Optimization程序集內部的AssetManager類。
我在想如果你有一個關於如何以一種乾淨的方式做到這一點的想法(即:使用可用的公共類,而不是複製和粘貼整個AssetManager代碼,在創建捆綁時不做花哨的Directory.EnumerateFiles) 。
謝謝!我知道一個更快的解決方案是使用Mindscape Workbench並捆綁生成的js文件,我正在尋找使用框架的東西,也許還要避免告訴團隊安裝一個工具人們可能不喜歡...
雖然打字稿有趣的是,它帶來了幾乎同樣的問題在這裏。你需要在VS中有一個插件(並且Express版本中不支持插件),並且你需要一種方法將你的.ts文件編譯成javascript,就像每個coffeescript文件一樣。 – Tallmaris
嘿,別擔心!這不適合所有人,我其實並沒有看到你在OP中使用Express,這絕對是一個限制因素。儘管如此,我發現它與我們在c#和VS工作流中已經知道的更接近,在其他情況下它可能適用於您。希望你的新方向適合你的團隊! – MisterJames