我想在我的ASP.NET WebForms应用程序(VS 2008)中使用不同版本的.js javascript文件:
有没有办法在调试时自动获取完整版本,并在应用程序部署到生产时缩小版本?如果答案是黑客,我不介意。
在VS 2010中有可能吗?
答案 0 :(得分:8)
当然有可能,但这里的问题是“你将如何设置它。”
我从这里开始的关键是DEBUG
定义。所以,假设你想在页面上进行设置。
因此,您可以在页面上执行以下操作:
<% #if DEBUG %>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<% #else %>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<% #endif %>
或者,您可以使用Literal并在代码后面进行此切换。
<asp:Literal runat="server" ID="txtScripts" EnableViewState="false" />
和
protected void Page_Load(object sender, EventArgs e)
{
#if DEBUG
txtScripts.Text = "<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js\"></script>";
#else
txtScripts.Text = "<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js\"></script>";
#endif
}
其他方法是使用处理程序并读取所有javascript文件并使用代码缩小,并再次使用相同的密钥DEBUG发送一个或另一个版本。
我个人使用MS Ajax MInified http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx 我读了所有的javascript文件,将它们作为一个文件,并使用这些参数来缩小它们。
Minifier MyMin = new Minifier();
CodeSettings cs = new CodeSettings();
#if DEBUG
cs.MinifyCode = false;
cs.OutputMode = OutputMode.MultipleLines;
cs.PreserveFunctionNames = true;
cs.RemoveFunctionExpressionNames = false;
cs.RemoveUnneededCode = false;
cs.StripDebugStatements = false;
#else
cs.MinifyCode = true;
cs.OutputMode = OutputMode.SingleLine;
#endif
Write(MyMin.MinifyJavaScript(AllMyJavascript, cs))
答案 1 :(得分:3)
我喜欢使用SquishIt库。
允许您将CSS和JavaScript保存在多个文件中以进行本地开发,并发布一个缩小的文件进行生产。
编辑:此工具允许以编程方式定义要缩小的文件列表。定义此列表的代码嵌入在.aspx文件或MVC视图中的代码块中。在运行时,会发生两件事:
但是,如果定义#debug
,则代码会在输出中呈现指向原始文件的链接,而不是这样做,因此可以使用原始版本的文件进行调试。
它支持CSS和javascript minfication。
有关详细信息,请点击以上链接。