c# - 使用 Microsoft Web Optimization 缩小 CSS 和 JavaScript

标签 c# javascript asp.net-mvc-3 minify web-optimization

我正在尝试使用

http://blogs.msdn.com/b/cdndevs/archive/2012/01/23/javascript-and-css-minifying-bundling-with-the-microsoft-web-optimization-nuget-package.aspx

缩小和捆绑我的 css 和 js 文件

我能找到的所有示例都包含母版页/_layout 文件中的所有脚本。

我希望能够拥有一个

 @RenderSection("Script", false)

在我的 _layout 文件中,像这样从我的“ subview ”添加脚本

@section Script {
<script src="@Url.Content("~/Scripts/Configuration/Configuration.js")" type="text/javascript"></script>
}

现在我的问题是如何将文件动态添加到包中并强制清除缓存?

现在我有这个

 public static void AddBundleFile(this HtmlHelper helper, string path, Type type, int index)
    {
        var bundle = BundleTable.Bundles.GetRegisteredBundles()
            .Where(b => b.TransformType == type)
            .First();

        bundle.AddFile(path);
    }

从我的“ subview ”添加文件,但捆绑文件永远不会更新..

最佳答案

我不是 100% 确定您的哪个部分有问题。听起来您想动态地包含 bundle ?我真的会尽量避免使用任何动态获取 JS 然后以任何特定顺序合并/组合它的机制。

迟早,您将需要精细控制以何种顺序包含哪些 JS。您越早解决这个问题,您的应用就越有前途。令人沮丧的是,他们甚至构建了自动将所有脚本捆绑在一个文件夹中的能力,这是一个糟糕的主意。

因此,您只剩下必须指定 javascript 文件和包的包含顺序这一极其轻微的烦恼。我们通过维护一个简单的 List<string> 来做到这一点在应用程序启动时消耗。

现在我认为对于我们的使用来说,我们可以只为网站提供一个大的 bundle ,但我可以看到设置指定 bundle 的功能,然后还指定 bundle 的包含顺序。最后你会得到一个List<T>。复习。

这是我们的部分脚本的样子,它让我们可以在使用 bundle 或使用单独包含的 javascript 文件之间动态切换:

@if (NameSpace.UI.UseBundledResources) // set in the web.config, different per environment
{
    <script src="@Url.ContentNoCache("~/bundle.js")" type="text/javascript"></script>    
}
else
{
    foreach (var file in NameSpace.UI.JavaScriptFileNames)
    {
    <script src="@Url.ContentNoCache(file)" type="text/javascript"></script>  
    } 
}

然后我们的应用启动

var customJsFiles = NameSpace.UI.JavaScriptFileNames;
var myJSBundle = new Bundle("~/bundle.js", typeof(JsMinify));
customJsFiles.ForEach(f => myJSBundle.AddFile(f));
BundleTable.Bundles.Add(myJSBundle);

关于c# - 使用 Microsoft Web Optimization 缩小 CSS 和 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9685662/

相关文章:

javascript - 使用 ng-click 更改列表项事件 bg-color

javascript - 以编程方式将可滚动 div 滚动到其顶部

C# 深入 : Problem set?

c# - C# 中的数据类型和结构

c# - 在 WPF 中启动应用程序,如何不使用启动 uri,而是使用窗口实例

javascript - Firefox 24 的 JavaScript 版本为 1.5

asp.net - 使用 MVC4 自定义错误处理

asp.net-mvc - 应用程序池回收导致响应时间很长

asp.net-mvc - 处理ASP.NET MVC系统错误的正确方法

c# - 从服务器删除文件