正如你们许多人所知,你发现的大多数jQuery(或javascript,就此而言)插件都可以下载为常规格式化代码,缩小版本或两者兼而有之。出于开发目的,我喜欢使用插件的非缩小版本,以防我需要设置Firebug断点或因任何原因查看它。
现在,当我打包我的应用程序并进行部署时,为了提高效率,我宁愿切换到插件的缩小版本。我知道这样做的唯一方法是手头有两个版本,然后手动更改我的视图中的所有引用(我使用MVC)指向缩小版本,然后打包和部署。理想情况下,我也会缩小(也许会混淆)我自己的javascript文件。
有没有人知道使用非缩小插件(为了便于阅读)和使用缩小版本(为了提高效率)进行开发的更好,更有效的方法?你可以指点我谈论它的任何文章吗?我对如何处理javascript部署非常陌生,并且很可能会采用最佳实践。
感谢。
答案 0 :(得分:4)
我倾向于总是使用第3方JS的缩小版本,除非我特别需要查看它...无论如何,你可以写一个html帮助器,根据一些配置插入正确的脚本名称(可以调试vs发布)...
你最终会得到类似的东西:
<%= Html.IncludeJQuery() %>
或者如果所有脚本都遵循相同的约定(.min.js用于缩小版本),请执行一个帮助程序,在您发布的脚本中插入“.min”是在发布时
<%= Html.IncludeCorrectVersionOfScript("jquery-1.4.2.js") %>
更新
Html帮助程序,是Mvc的HtmlHelper类的扩展方法,可用于发出ActionLink,BeginForm,EditorFor等。您基本上将一个新方法(仅限albiet静态)附加到该对象,以便您可以执行Html.MyMethod。 ......对此的帮助就像是:
public static class ScriptIncludeHelper
{
public static MvcHtmlString IncludeCorrectVersionOfScript(this HtmlHelper html, string script)
{
if (!html.ViewContext.HttpContext.IsDebuggingEnabled)
script = script.Replace(".js", ".min.js");
var tag = string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>", script);
return MvcHtmlString.Create(tag);
}
}
请注意,这是非常简化的版本(没有验证字符串,等等.etc.etc。)
现在您可以使用IsDebuggingEnabled或web.config中的配置或静态配置来定义是否要包含调试版本的最小化版本...
跳这个帮助
答案 1 :(得分:1)
这是Rails如何处理它的一个例子。它可能是也可能不是最佳实践,但完全消除了开发人员的负担。
包含每个环境设置的配置文件:
# resources.yml
# example config file
development:
jquery_url: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js
test:
jquery_url: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js
production:
jquery_url: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js
根据当前环境将资源解析为在应用程序启动时随处引用的变量。
RESOURCES = YAML::parse('resources.yml')[CURRENT_ENVIRONMENT]
然后使用包含在所有页面中的基本布局或模板,而不是让每个视图或页面指定它自己的设置。 <%= yield %>
表示来自子视图或页面的输出到那里。
# application.html.erb
<!DOCTYPE html>
<html
<head>
<script src="<%= RESOURCES['jquery_url'] %>"</script>
</head>
<body> <% yield %> </body>
</html>
然后您只需更改一个键 - CURRENT_ENVIRONMENT
(开发,测试或生产)即可触发所有内容。它对于已经或可能在环境之间发生变化的API密钥和所有其他类型的依赖项也很有用。