zoukankan      html  css  js  c++  java
  • 扩展asp.net Bundle

    前言

    新建Asp.net  MVC4项目的时候,在Global.asax.cs里面发现多了一句代码

    BundleConfig.RegisterBundles(BundleTable.Bundles)

    google了以后终于弄清楚了这个的作用,发现这个东西确实非常实用,且功能强大,能够压缩合并js和CSS,但是目前的使用起来不是特别好,如果添加js或者css文件的话,需要修改BundleConfig的代码。

    这里我自己简单修改了BundleConfig,对这个进行简单的扩展。

    下面贴出代码:

    先贴配置文件BundleConfig.xml(文件放在网站目录下路径见代码中变量BundleConfigPath)

    <?xml version="1.0" encoding="utf-8" ?>
    <root>
    <Scripts>
    <Script Path="~/bundles/jquery">
    <File>~/Scripts/jquery-{version}.js</File>
    </Script>
    <Script Path="~/bundles/jqueryui">
    <File>~/Scripts/jquery-ui-{version}.js</File>
    </Script>
    <Script Path="~/bundles/jqueryval">
    <File>~/Scripts/jquery.unobtrusive*</File>
    <File>~/Scripts/jquery.validate*</File>
    </Script>
    <Script Path="~/bundles/modernizr">
    <File>~/Scripts/modernizr-*</File>
    </Script>
    <Script Path="~/bb/aa">
    <File>~/Views/Home/addda.js</File>
    </Script>
    </Scripts>
    <Styles>
    <Style Path="~/Content/themes/base/css">
    <File>~/Content/themes/base/jquery.ui.core.css</File>
    <File>~/Content/themes/base/jquery.ui.resizable.css</File>
    <File>~/Content/themes/base/jquery.ui.selectable.css</File>
    <File>~/Content/themes/base/jquery.ui.accordion.css</File>
    <File>~/Content/themes/base/jquery.ui.autocomplete.css</File>
    <File>~/Content/themes/base/jquery.ui.button.css</File>
    <File>~/Content/themes/base/jquery.ui.dialog.css</File>
    <File>~/Content/themes/base/jquery.ui.slider.css</File>
    <File>~/Content/themes/base/jquery.ui.tabs.css</File>
    <File>~/Content/themes/base/jquery.ui.datepicker.css</File>
    <File>~/Content/themes/base/jquery.ui.progressbar.css</File>
    <File>~/Content/themes/base/jquery.ui.theme.css</File>
    </Style>
    <Style Path="~/Content/css">
    <File>~/Content/site.css</File>
    </Style>
    </Styles>
    </root>

    代码文件:BundleConfig.cs

    public class BundleConfig
        {
            public static string BundleConfigPath = "~/Config/BundleConfig.xml";
            /// <summary>
            /// Register Bundles From XML
            /// </summary>
            /// <param name="bundles"></param>
            public static void RegisterBundles(BundleCollection bundles)
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(HttpContext.Current.Server.MapPath(BundleConfigPath));
                XmlNode root = doc.DocumentElement;
                // Regester Script
                XmlNodeList ScriptList = root.SelectNodes("Scripts/Script");
                if (ScriptList != null && ScriptList.Count > 0)
                {
                    foreach (XmlNode node in ScriptList)
                    {
                        string path = CheckNodeRegedit(node);
                        if (string.IsNullOrEmpty(path)) continue;
                        var bound = new ScriptBundle(path);
                        List<string> files = GetFilesFormNode(node);
                        if (files.Count > 0)
                        {
                            bound.Include(files.ToArray());
                            bundles.Add(bound);
                        }
                    }
                }
                // Regester Style
                XmlNodeList StyleList = root.SelectNodes("Styles/Style");
                if (StyleList != null && StyleList.Count > 0)
                {
                    foreach (XmlNode node in StyleList)
                    {
                      
                        string path = CheckNodeRegedit(node);
                        if (string.IsNullOrEmpty(path)) continue;
                        var bound = new StyleBundle(path);
                        List<string> files = GetFilesFormNode(node);
                        if (files.Count > 0)
                        {
                            bound.Include(files.ToArray());
                            bundles.Add(bound);
                        }
                    }
                }
                doc = null;
            }
            /// <summary>
            /// 如果内容为空则不添加
            /// </summary>
            /// <param name="node"></param>
            /// <returns></returns>
            private static List<string> GetFilesFormNode(XmlNode node)
            {
                List<string> files = new List<string>();
                foreach (XmlNode nodeFile in node.ChildNodes)
                {
                    if (!string.IsNullOrEmpty(nodeFile.InnerText.Trim()))
                        files.Add(nodeFile.InnerText.Trim());
                }
                return files;
            }
            /// <summary>
            /// 检查注册的Node
            /// </summary>
            /// <param name="node"></param>
            /// <returns></returns>
            private static string CheckNodeRegedit(XmlNode node)
            {
                XmlAttribute pathAtt = node.Attributes["Path"];
                string path = string.Empty;
                if (pathAtt == null || string.IsNullOrEmpty(pathAtt.Value.Trim()) || node.ChildNodes.Count == 0)
                    return string.Empty;
                else
                    return pathAtt.Value.Trim();
            }
        }

  • 相关阅读:
    解决xcode5升级后,Undefined symbols for architecture arm64:问题
    第8章 Foundation Kit介绍
    app 之间发送文件 ios
    iphone怎么检测屏幕是否被点亮 (用UIApplication的Delegate)
    CRM下载对象一直处于Wait状态的原因
    错误消息Customer classification does not exist when downloading
    How to resolve error message Distribution channel is not allowed for sales
    ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼
    有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中
    SAP GUI和Windows注册表
  • 原文地址:https://www.cnblogs.com/tangruixin/p/2784878.html
Copyright © 2011-2022 走看看