javascript代码实例教程-Asp.net MVC在View里动态捆绑压缩引用的js

发布时间:2019-01-22 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-Asp.net MVC在View里动态捆绑压缩引用的js脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 前言

 

Asp.net MVC 4以上版本多了Bundleconfig.RegisterBundles方法,可以把要捆绑的脚本或样式进行捆绑压缩,以减少客户端的请求次数从而提高了客户端的访问速度。

 

问题

 

但世上懒人的数量还是很多,我也是一个,觉得这个方法还不够方便。在实际中,一些小的页面或独立页面,开了一些开的js库之后,js文件比较多,而且每个页面引用的js又不太一样,如果能不在BundleConfig描述如何捆绑,像传统一样把js拉过来就能自动达到捆绑后的效果,是懒人多想要的结果。正是朝着这个目标,本随笔将实现一个htML的扩展方法,来完成这个功能。你只要像传统一样把js拉到view上,改几个字符,就可以达到了效果了,引入的js还是有智能提示的。

 

调用方法

 

@Html.BundleScripts(

      @<script src="~/Scripts/jquery-1.7.1.min.js"></script>,

      @<script src="~/Scripts/login.js"></script>,

      @<script src="~/Content/validBox/validBox.js"></script>

)

如上,把要捆绑的js都当BundleScripts的参数就可以了,效果如下:

 

 

 

BundleScripts的实现

 

复制代码

        /// <summary>

        /// 动态捆绑多个脚本

        /// </summary>

        /// <param name="htmlHelPEr"></param>

        /// <param name="scripts">javscript</param>

        /// <returns></returns>

        public static IHtmlString BundleScripts(this HtmlHelper htmlHelper, params Func<object, object>[] scripts)

        {

            if (scripts == null)

            {

                throw new argumentNullException("scripts");

            }

 

            VAR inputs = new StringBuilder();

            foreach (var script in scripts)

            {

                inputs.AppendLine(script.Invoke(null).ToString().ToLower());

            }

 

            var applicationPath = htmlHelper.ViewContext.HttpContext.Request.ApplicationPath;

            Func<string, string> fixSrc = (src) => applicationPath == "/" ? "~" + src : src.Replace(applicationPath, "~/");

 

            var srcs = inputs.ToString().Matches(@"(?<=src="").+?/.js(?="")").Select(ITem => fixSrc(item)).ToArray();

            var path = string.Format("~/{0}", Math.Abs(string.Join(string.Empty, srcs).GetHashCode()));

 

            if (BundleTable.Bundles.GetBundleFor(path) == null)

            {

                BundleTable.Bundles.Add(new ScriptBundle(path).Include(srcs));

            }

            return Scripts.Render(path);

        }

复制代码

注:Matches方法是一个对正则表达式的包装。

 

提问和思考

 

你觉得此方法的关键之处在哪里?欢迎提问,我们一起探讨,最好能实现一个比此方法更方便的方法来。

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-Asp.net MVC在View里动态捆绑压缩引用的js全部内容,希望文章能够帮你解决javascript代码实例教程-Asp.net MVC在View里动态捆绑压缩引用的js所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。