![](/img/trans.png)
[英]ASP.net MVC Minifying and Bundling - How to minify a single JavaScript file
[英]Bundling and minifying modular JavaScript (RequireJS / AMD) with ASP.NET MVC
有沒有人有任何經驗或知道在ASP.NET MVC項目中捆綁和縮小像RequireJS / AMD這樣的模塊化JavaScript的好解決方案?
是使用RequireJS優化器的最佳方式(也許是在后期構建操作中?) - 或者ASP.NET MVC有哪些更好的東西?
我認為你遇到的問題是你使用匿名定義。 如果您需要包含所有定義的組合/捆綁腳本文件,則必須為其命名。
例如。
define("someModule", ["jquery", "ko"], function($,ko) { ... });
代替
define(["jquery", "ko"], function($,ko) { ... });
如果使用文件名作為模塊名稱,則可以異步加載(非捆綁)以及預加載(捆綁)。 這樣,您可以在調試模式和發布模式下工作,而無需更改您的要求。
我沒有使用RequireJS優化器的經驗來知道它是否負責匿名定義。
更新:
我最近不得不這樣做,我遇到的一個問題是加載require.js的腳本標記的data-main屬性。 由於main.js文件對捆綁模塊有依賴性,因此需要在main.js之前加載,但需要在require.js之后加載。 所以我不得不拋棄data-main並最后加載該文件(非捆綁)。
從
<script src="../JS/require-v2.1.2.js" type="text/javascript" data-main="main.js"></script>
至
<script src="../JS/require-v2.1.2.js" type="text/javascript"></script>
<%: System.Web.Optimization.Scripts.Render("~/bundles/signup") %>
<script src="main.js" type="text/javascript"></script>
我沒看過,但如果bundle配置可以確保main.js是最后一個,那么甚至不需要最后一個腳本標記。
以下是將RequireJS與main.js捆綁在一起的步驟。 您可以在<head>
標記中找到一行。 這並未解決匿名定義的問題。
HTML
<head runat="server">
<title></title>
<%: System.Web.Optimization.Scripts.Render("~/bundles/scripts") %>
</head>
BundleConfig.cs
using System.Web;
using System.Web.Optimization;
public class BundleConfig
{
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/scripts").Include(
"~/scripts/libs/require.js",
"~/scripts/main.js"));
}
}
main.js必須在沒有data-main的情況下工作(我需要設置baseUrl)
require.config({
baseUrl: "scripts"
});
我不確定這是否是可接受的解決方案,但Visual Studio 2012有一個NuGet包(Microsoft.Web.Optimization),它支持本機縮小和捆綁。 我不確定它是否適用於2010年
它是application_start中的一行代碼
Microsoft.Web.Optimization.BundleTable.Bundles.EnableDefaultBundles();
http://msdn.microsoft.com/en-us/vs11trainingcourse_aspnetandvisualstudio_topic5
我知道這是一個老問題,但你可以看看RequireJS.NET Compressor(使用YUI壓縮器,而不是ASP.NET捆綁 - 至少目前),這是RequireJS.NET NuGet包的一部分。
參考文獻:
Compressor - http://requirejsnet.veritech.io/compressor.html
一般文檔 - http://requirejsnet.veritech.io/
Github項目 - https://github.com/vtfuture/RequireJSDotNet
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.