簡體   English   中英

啟動一個ASP.NET MVC 4項目。 如果我使用捆綁軟件,是否有必要使用RequireJS?

[英]Starting an ASP.NET MVC 4 project. Is it necessary to use RequireJS if I'm using bundling?

  • 如果RequireJS做到這一點,以便將多個js文件組合到一個main.js文件中,那么它本質上與ASP.NET的腳本捆綁功能相同嗎?
  • 除了捆綁之外 ,使用RequireJS的唯一好處是能夠根據RequireJS配置加載某些腳本嗎?

我對捆綁和RequireJS都非常陌生,但是經過一番閱讀之后,捆綁似乎可以處理多個請求以加載多個js文件。 關於將RequireJS與捆綁一起使用,我還有其他可能錯過的事情嗎?

如果要使用MVC 4,建議您使用捆綁軟件。

使用捆綁軟件,您可以定義一組腳本,這些腳本將在瀏覽器中呈現,這取決於您是調試還是生產環境。

為了檢測您是否處於調試狀態,必須在web.config文件中更改以下設置

<compilation debug="true">
  • 如果要調試,則Bundle引擎會將所有腳本呈現為單獨的標記。

  • 如果您不進行調試,則Bundle引擎將僅呈現一個標記,並且當前bundle引用的所有腳本都將合並到一個單獨的JS文件中

捆綁軟件還使用約定來檢測應呈現的腳本文件

簡單的例子

例如,對於JQuery

JQuery腳本文件如下所示:

  • jQuery的1.8.2.js

  • jQuery的1.8.2.min.js

聲明捆綁包時,您可以這樣做:

        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

請注意,您未指定文件名的版本或.min部分,因為這是捆綁引擎在選擇正確文件時將考慮的特殊標記。

每當您使用指定的路徑引用包時,包引擎都會對其進行處理,並且它將選擇正確的腳本文件,例如:

  • 如果進行調試,將呈現jquery-1.8.2.js文件

  • 如果不調試,將呈現jquery-1.8.2.min.js

在此示例中,捆綁包的名稱為: ~/bundles/jquery ,您將在頁面上這樣引用:

@Scripts.Render("~/bundles/jquery")

如果捆綁軟件中包含更多腳本,則相同的規則適用於所有腳本。

復雜的例子

考慮此捆綁包注冊

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
            "~/Scripts/jquery.unobtrusive*",
            "~/Scripts/jquery.validate*"));
  • 如果進行調試,這將是呈現的HTML

     <script src="/Scripts/jquery.unobtrusive-ajax.js"></script> <script src="/Scripts/jquery.validate.js"></script> <script src="/Scripts/jquery.validate.unobtrusive.js"></script> 
  • 如果不調試,將呈現:

     <script src="/bundles/jqueryval?v=6Fqs6ZHMM_nFyDgv5mxz89PzsVLAnRNKOhqrK-mI5yU1"></script> 

    該鏈接將包含所有合並的腳本文件,從而使頁面加載速度更快,因為所有腳本都將由瀏覽器一鍵下載。

有關更多信息, 請參見ASP.NET 4.5的新功能。

RequireJS是合適的,對於實現JavaScript重UI的項目,有些人可能說是必需的。

  1. 首先,RequireJS與Asp.net MVC捆綁的工作方式不同。 默認情況下,腳本繼續單獨加載。 通過捆綁,您可以控制如何在MVC中合並腳本。 使用RequireJS,您可以編寫每個代碼模塊,以便可以將其聲明為另一個模塊內的依賴項,以及聲明其自己的依賴項。 本質上,您最終要處理JS中的所有JS結構。
  2. RequireJS提供的不僅僅是綁定機制。 如果要使用JavaScript構建UI,則使用RequireJS會更好。 如果您只需要幾個jQuery小部件,Asp.net MVC捆綁將是最簡單的設置。

多個請求並不總是一件壞事。 最重要的是,您選擇的解決方案會隨着項目的增長而擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM