Создание бандлов. Библиотеки из CDN

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

Создадим свой бандл. Например, я определил в папке со скриптами подкаталог MyScripts для каких-то своих скриптов, которые я хочу подключать в своем бандле:

В файле BundleConfig.cs я добавляю свой бандл с моими файлами:

using System.Web;
using System.Web.Optimization;

namespace Guestbook
{
    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
			
			bundles.Add(new ScriptBundle("~/bundles/myscripts").Include(
                        "~/Scripts/MyScripts/*.js"));
						
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-{version}.js"));

            
            // Далее идет подключение остальных бандлов
        }
    }
}

Выражение "~/Scripts/MyScripts/*.js" подключит в бандл все файлы js, которые есть в каталоге Scripts/MyScripts. Далее переходим к разметке и подключаем там новый бандл:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    @RenderBody()

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/myscripts")
    @RenderSection("scripts", required: false)
</body>
</html>

И после этого бандл будет подключаться в приложение. При подключении бандлов не стоит забывать об очередности: если у вас есть бандлы, файлы которых зависят от других файлов в других бандлов, например, от jquery, то, естественно, зависимые бандлы надо подключать после основных.

Подключение библиотек из сетей CDN

Обычным делом на сегодняшний день является подключение различных популярных библиотек javascript из сетей CDN. Если мы хотим подключать, например, библиотеку jquery не со своего приложения, а с какой-нибудь сети CDN, то мы должны включить поддержку CDN в бандлах в файле BundleConfig.cs:

using System.Web;
using System.Web.Optimization;

namespace Guestbook
{
    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
			// Оригинальное подключение закомментируем, так как будем подключаться из сети CDN
            //bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
            //            "~/Scripts/jquery-{version}.js"));

			bundles.UseCdn = true;   //включаем поддержку CDN

            // добавляем адрес нужной библиотеки в какой-нибудь сети CDN
            var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js";

            bundles.Add(new ScriptBundle("~/bundles/jquery",
                        jqueryCdnPath).Include(
                        "~/Scripts/jquery-{version}.js"));
			
            // Далее остальные бандлы
        }
    }
}

Далее подключаем бандл обычным способом. Кроме того, мы можем задать возможность подключения библиотеки из своего приложения, если библиотеку не удалось загрузить с этой сети:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    @RenderBody()

    @Scripts.Render("~/bundles/jquery")
    <script type="text/javascript">
            if (typeof jQuery == 'undefined') {
                var e = document.createElement('script');
                e.src = '@Url.Content("~/Scripts/jquery-1.7.1.js")';
                e.type = 'text/javascript';
                document.getElementsByTagName("head")[0].appendChild(e);
            }
    </script> 
    @RenderSection("scripts", required: false)
</body>
</html>
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850