Loading [MathJax]/extensions/tex2jax.js

Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

ASP.NET C#

BundleConfig.csの設定および記述方法について

投稿日:2021年7月2日 更新日:

 

<目次>

(1) BundleConfig.csの設定および記述方法について
 (1-1) BundleConfig.csの設定および記述方法について
 (1-2) BundleConfig.csの書き方
 (1-3) (参考)BundleConfig.csの作り方

(1) BundleConfig.csの設定および記述方法について

(1-1) BundleConfig.csとは?

「BundleConfig」はASP.NET MVCにおいて、クライアントが「JavaScript」や「css(スタイルシート)」などをサーバからダウンロードする際のネットワークトラフィックを最小限に抑えるために、複数のJavaScriptやcssをダウンロードして束ねる(Bundle)事により、HTTPリクエストの数を減少させて、ページの表示速度を向上させるための機能です。この設定を記述する定義ファイル(C#プログラム)が「BundleConfig.cs」です。

(図111)

 以下は実際にBundle.configありの場合と無しの場合について、ネットワークトラフィックを比較した結果です。

(図112)バンドルなし

(図113)バンドルあり

(1-2) BundleConfig.csの書き方

以下のサンプルを基にBundleConfigの書き方をご紹介いたします。

(「BundleConfig.cs」のサンプルPG)

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Optimization;
  6.  
  7. namespace BookLibrarySystem
  8. {
  9. public class BundleConfig
  10. {
  11. public static void RegisterBundles(BundleCollection bundles)
  12. {
  13. //# css(カスタムcss、bootstrap)を「~/Content/css」に紐づけ
  14. bundles.Add(new StyleBundle("~/Content/css").Include(
  15. "~/Content/Site.css",
  16. "~/Content/bootstrap-pulse.css"));
  17.  
  18. //# modernizr(ユーザのブラウザ機能検知)を「~/Scripts/modernizr-*」に紐づけ
  19. bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
  20. "~/Scripts/modernizr-*"));
  21.  
  22. //# jQueryを「~/bundles/jquery」に紐づけ
  23. bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
  24. "~/Scripts/jquery-{version}.js"));
  25.  
  26. //# bootstrap.jsを「~/bundles/bootstrap」に紐づけ
  27. bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
  28. "~/Scripts/bootstrap.js"));
  29. }
  30. }
  31. }
(図121)

基本的な方針として、「対象ファイル」(バンドルしたい対象)とその「URL(のセット)」を紐づけた上で、アプリケーションに登録します。登録にはBundleCollectionクラスのAddメソッドを使います。
 
(構文)
  1. Add(【Bundle型のオブジェクト】)
 
そして、Addメソッドの引数であるBundle型のオブジェクトはJavaScriptのバンドルの場合は「ScriptBundle」メソッドを、cssのバンドルの場合は「StyleBundle」メソッドをそれぞれ使用します。「仮想パス」というのは、バンドルを実際に呼び出す際に使用する仮想の名前です。
 
(構文)
  1. //# JavaScriptの場合
  2. ScriptBundle(【String型の仮想パス】)
  3. //# cssの場合
  4. StyleBundle(【String型の仮想パス】)

 

更に、上記のScriptBundle、StyleBundleクラスの「Include」メソッドを使って、実際にバンドルする対象のファイルを列挙していきます。

(構文)

  1. Include(【String[]型の配列】)

 
(例)

  1. public static void RegisterBundles(BundleCollection bundles)
  2. {
  3. Bundle test = new StyleBundle("~/Content/css").Include("~/Content/bootstrap.css","~/Content/bootstrap_pulse.css");
  4. bundles.Add(test);
  5. //~中略~
  6. }

また、Includeメソッドで指定するバンドル対象は、ワイルドカードを指定して複数指定する事も可能です。
 
  1. //# ワイルドカード例①
  2. jquery-{version}.js
  3. //# ヒットする結果例①
  4. jquery-3.4.1.js
  5. jquery-3.4.2.min.js
  6. //# 以下も同様の意味になります
  7. jquery-*.js

 
目次にもどる

(1-3) (参考)BundleConfig.csの作り方

ASP.NET MVCのプロジェクトを作成する際に、もし「プロジェクトテンプレート」(予め簡単な画面が作られた状態でアプリを作れる機能)を使って作った場合は「BundleConfig.cs」は元々存在しているので、その場合は本手順の実施は不要です。
 
※↓こんな感じの画面が見える人は、恐らくApp_Start内にBundleConfig.csが既にあるはず
(図130)デフォルトの「プロジェクトテンプレート」で作成された画面
 
ただし、「空のMVCプロジェクト」から作っており、もしBundleConfig.csが無い場合でも通常のクラスと同様に新しく作ればOKです。
 
(作成手順)
 

・①App_Startフォルダを「右クリック」⇒「追加」⇒「クラス」と選択

(図131)
 

・②クラス名を「BundleConfig.cs」にして「追加」を押下

(図132)
 

・③前提パッケージのインストール

 
BundleConfigを使うにはパッケージ「Microsoft.AspNet.Web.Optimization」が必要となりますので、NuGetパッケージマネージャーからダウンロードします。
 
●NuGetパッケージマネージャーを開く
 
方法1:「ツール」⇒「NuGetパッケージマネージャー」⇒「パッケージマネージャーコンソール」と選択します。
(図133)

 

方法2:サンプルPGを貼り付けると、「Microsoft.AspNet.Web.Optimization」が必要が箇所でエラーになるので、それを右クリックする事でもNuGetを開けます。

(図134)

●Microsoft.AspNet.Web.Optimizationのインストール
「参照」タブから「Microsoft.AspNet.Web.Optimization」を検索し、インストールを押下します。
 
(図135)①
(図135)②
(図135)③

 

●コードの追記
あとは(1-2)で記載しているサンプルのようにBundleConfigの内容を記述すればOKです(※バンドル対象のファイル名は各自のものに置き換えをお願いします)
 
(図121)

以上でBundleConfig.csの設定は完了ですが、実際にバンドルを操作するためには、他にもいくつか設定が必要な項目があります。それらの項目について詳しくは下記の記事をご参照ください。
 
 
以下は対応内容を箇条書きにした表です。具体的な内容は上記URLの記事をご覧ください。
 
(表)

(確認①)BundleConfig.csの追記orWeb.configの修正
(確認②)Global.asax.csへの登録
(確認③)web.configへの追記(名前空間)
(確認③)各ビューやレイアウト(_Layout.cshtml等)でのインポート

 

Adsense審査用広告コード


Adsense審査用広告コード


-ASP.NET, C#

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

C#のスレッド(Thread)とは?概要やサンプルプログラムをご紹介

  <目次> (1) C#のスレッド(Thread)とは?概要やサンプルプログラムをご紹介  (1-1) 概要   (1-1-1) スレッドのライフライクルについて   (1-1-2) ma …

ASP.NET MVCのルーティングの基本

<目次> (1) ASP.NET MVCのルーティングの基本  (1-1) 構文  (1-2) サンプルプログラム   ・RouteConfig.cs   ・Controller   ・View  ( …

BundleConfig.csが読み込まれない場合の確認ポイントについて(ASP.NET)

  <目次> (1) BundleConfig.csが読み込まれない場合の確認ポイントについて(ASP.NET)  (1-1) 前提条件  (1-2) 確認ポイント   (確認①)Bundl …

C#のデリゲートが分からない・・を解決!初心者向けになるべく分かり易く説明してみた

<目次> (1) C#のデリゲートが分からない・・を解決!初心者向けになるべく分かり易く説明してみた  (1-1) デリゲートとは?「関数へのポインタ」だけでは説明しきれない・・  (1-2) デリゲ …

C#で配列に特定の値があるか?をチェックする方法を2つご紹介~ContainsとLINQ~

<目次> (1) C#で配列に特定の値があるか?をチェックする方法  (1-1) 方法①:ListクラスのContainsメソッドを使う方法   (1-1-1) 構文   (1-1-2) サンプルプロ …

  • English (United States)
  • 日本語
S