[解決済み] ScriptBundleのインクルード順序を明示的に指定するには?
質問
私は今 MVC4 System.Web.Optimization 1.0 ScriptBundle 機能を試しています。 .
私は以下のような構成にしています。
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
// shared scripts
Bundle canvasScripts =
new ScriptBundle(BundlePaths.CanvasScripts)
.Include("~/Scripts/modernizr-*")
.Include("~/Scripts/json2.js")
.Include("~/Scripts/columnizer.js")
.Include("~/Scripts/jquery.ui.message.min.js")
.Include("~/Scripts/Shared/achievements.js")
.Include("~/Scripts/Shared/canvas.js");
bundles.Add(canvasScripts);
}
}
で、以下のように表示します。
<script type="text/javascript" src="@Scripts.Url(BundlePaths.CanvasScripts)"></script>
ここで
BundlePaths.CanvasScripts
は
"~/bundles/scripts/canvas"
. これをレンダリングします。
<script type="text/javascript" src="/bundles/scripts/canvas?v=UTH3XqH0UXWjJzi-gtX03eU183BJNpFNg8anioG14_41"></script>
ここまでは良いのですが
~/Scripts/Shared/achievements.js
はバンドルされているソースの最初のスクリプトです。これは、その前に含まれるすべてのスクリプトに依存し
ScriptBundle
.
バンドルにインクルードステートメントを追加する順序を尊重するようにするにはどうすればよいですか?
更新
これは比較的新しい ASP.NET MVC 4 アプリケーションでしたが、最適化フレームワークのプレ リリース パッケージを参照していました。私はそれを削除し、RTM パッケージを以下の場所から追加しました。
http://nuget.org/packages/Microsoft.AspNet.Web.Optimization
. RTM版でweb.configにdebug=trueを指定した場合。
@Scripts.Render("~/bundles/scripts/canvas")
は個々のスクリプトタグを正しい順序でレンダリングします。
web.config で debug=false を指定すると、結合されたスクリプトは achievements.js スクリプトを最初に持ちますが、その関数定義 (オブジェクト コンストラクタ) は後で呼び出されるため、エラーなしで実行されます。おそらく、minifier は依存関係を把握するのに十分賢いのでしょうか?
また、試しに
IBundleOrderer
の実装を RTM で試してみましたが、両方のデバッグ オプションで同じ動作になりました。
つまり、minifiedバージョンは私が期待する順序ではありませんが、それは動作します。
どのように解決するのですか?
RTM ビットではこの動作は見られません。Microsoft ASP.NET Web Optimization Framework 1.0.0 ビットを使用していますか? http://nuget.org/packages/Microsoft.AspNet.Web.Optimization ?
私は新しいMVC4インターネットアプリケーションのウェブサイトをベースに、あなたのサンプルと同様の再現を使用しました。
BundleConfig.RegisterBundlesに追加しました。
Bundle canvasScripts =
new ScriptBundle("~/bundles/scripts/canvas")
.Include("~/Scripts/modernizr-*")
.Include("~/Scripts/Shared/achievements.js")
.Include("~/Scripts/Shared/canvas.js");
bundles.Add(canvasScripts);
そして、デフォルトのインデックスページに、追加しました。
<script src="@Scripts.Url("~/bundles/scripts/canvas")"></script>
そして、バンドル用のminified javascriptの中で、achievement.jsの中身がmodernizrの後にあることを確認しました...。
関連
-
[解決済み] RedirectToActionのパラメータとしてmodelを渡すことはできますか?
-
[解決済み] ASP.NET MVCアプリケーションで、デバッグ用の起動ページを設定するにはどうすればよいですか?
-
[解決済み] ASP.NET MVCにおけるApiControllerとControllerの相違点
-
[解決済み] 既存のASP.NET MVC 4 WebアプリケーションのプロジェクトにWeb APIを追加するにはどうすればよいですか?
-
[解決済み】MVC 4 Razor ファイルアップロード
-
[解決済み】ASP.NET MVC 3 Razor - EditorForにクラスを追加する。
-
[解決済み] ASP.Net MVC デフォルトの HTTP ヘッダーを削除する方法は?
-
[解決済み] ASP.NET MVCコントローラから外部URIへのリダイレクト
-
[解決済み] エリア間のRedirectToAction?
-
[解決済み] ASP.NET MVC Html.ActionLinkにアンカータグを含める
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HTTPヘッダを送信した後、サーバーがステータスを設定できない IIS7.5
-
[解決済み] RedirectToActionのパラメータとしてmodelを渡すことはできますか?
-
[解決済み] ルート値を含むURL.Action()
-
[解決済み] RedirectToActionでURLが変更されない、またはIndexビューに移動しない
-
[解決済み】MVCアプリケーションでデータをキャッシュする方法
-
[解決済み】Html5 data-* with asp.net mvc TextboxFor html attributes
-
[解決済み】jQuery UI ダイアログ - 閉じるアイコンがない
-
[解決済み] ASP.NET MVCにおけるロールベースアクセスコントロール(RBAC)とクレームベースアクセスコントロール(CBAC)の比較
-
[解決済み] Visual Studio 2012 または Visual Studio 2013 で古い MVC プロジェクトを開くにはどうすればよいですか?
-
[解決済み] フォルダ内のすべてのファイルを1つのバンドルに含める