【发布时间】:2012-10-25 05:10:30
【问题描述】:
我开发应用的时候想用jquery-1.3.2.js,部署的时候想用jquery-1.3.2.min.js?
在不手动注释和取消注释的情况下在两者之间切换的最佳方法是什么。
谢谢。
【问题讨论】:
-
你为什么不总是使用最小的?
-
有时候,我想调试一些jquery函数,我认为non-min的更易读。
标签: jquery asp.net-mvc
我开发应用的时候想用jquery-1.3.2.js,部署的时候想用jquery-1.3.2.min.js?
在不手动注释和取消注释的情况下在两者之间切换的最佳方法是什么。
谢谢。
【问题讨论】:
标签: jquery asp.net-mvc
我有一个 HtmlHelper 扩展方法来加载我的 JavaScript 文件。它看起来像这样......
public static string JavascriptTag(this HtmlHelper html, string javascriptName)
{
var format = "<script src=\"/Content/Scripts/{0}.js\" type=\"text/javascript\"></script>\r\n";
#if (!DEBUG)
javascriptName += ".min";
#endif
return string.Format(format, javascriptName);
}
这很简单,就像:
<%= Html.JavascriptTag("jquery-1.3.2") %>
<%= Html.JavascriptTag("general") %>
我可以使用这个约定,因为我还有一个构建任务,它将我的 content/scripts 目录中的所有 JS 文件压缩,然后将 .min 插入到文件名中。
如果你没有那种奢侈,你可以使用这样的变体:
public static string JavascriptTag(this HtmlHelper html, string devFileName, string liveFileName)
{
var format = "<script src=\"{0}\" type=\"text/javascript\"></script>\r\n";
var fileNameToUse = devFileName;
#if (!DEBUG)
fileNameToUse = liveFileName;
#endif
return string.Format(format, fileNameToUse );
}
然后可以这样称呼:
<%= Html.JavascriptTag("/Content/Scripts/jquery-1.3.2.js", "/Content/Scripts/jquery-1.3.2.min.js") %>
<%= Html.JavascriptTag("/Content/Scripts/general.js", "/Content/Scripts/general.min.js") %>
上述方法的另一个好处是您可以将 CDN 用于库,例如
<%= Html.JavascriptTag("/Content/Scripts/jquery-1.8.2.js", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js") %>
【讨论】:
例如,将两个文件命名为 jquery.js,并放入某个文件夹 (libs) 部署时,不要部署 lib 文件夹。
【讨论】:
我确信有人可以将此答案翻译成asp.net:我根据我在项目中定义的APPLICATION_ENVIRONMENT 做了一个条件。不确定 asp.net 中是否有类似的东西,但如果你在生产服务器上,你可以提供 .min - 在开发/测试机器上你可以提供完整的库。
【讨论】:
如果您以编程方式添加声明,那么最好的方法是使用
#if DEBUG
编译器指令。在 DEBUG 区域使用您完全扩展的库,在非 DEBUG(当您在发布模式下编译时)放置 .min 版本。然后您只需要担心确保在上线时编译 Release。
或者,为您的不同发布环境设置单独的 .config 文件,并在其中指定您的 javascript 包含。
【讨论】:
您可以将脚本命名为 jquery.js。并添加另外两个 js 文件。首先将命名为jquery.js.debug,其他onw jquery.js.release。并且在编译应用程序时使用适当的 js 文件。
我正在使用它来更改 web.config 文件。更多信息可以建立here。
【讨论】:
如果你使用 django,你可以使用 django-compress 自动处理。
【讨论】: