是否可以在Web应用程序中使用不同的javascript文件进行调试和生成?

时间:2012-04-19 12:33:56

标签: javascript asp.net visual-studio debugging visual-studio-debugging

我想在我的ASP.NET WebForms应用程序(VS 2008)中使用不同版本的.js javascript文件:

  • 完整版本,评论等等
  • 缩小版,用于制作

有没有办法在调试时自动获取完整版本,并在应用程序部署到生产时缩小版本?如果答案是黑客,我不介意。

在VS 2010中有可能吗?

2 个答案:

答案 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视图中的代码块中。在运行时,会发生两件事:

  • 动态创建minifed文件
  • 在最终呈现的HTML
  • 中创建了动态创建的缩小文件的链接

但是,如果定义#debug,则代码会在输出中呈现指向原始文件的链接,而不是这样做,因此可以使用原始版本的文件进行调试。

它支持CSS和javascript minfication。

有关详细信息,请点击以上链接。