我应该在开发和部署期间使用缩小版还是常规版的jQu​​ery插件?

时间:2010-07-21 16:24:01

标签: javascript asp.net-mvc jquery-plugins minify

正如你们许多人所知,你发现的大多数jQuery(或javascript,就此而言)插件都可以下载为常规格式化代码,缩小版本或两者兼而有之。出于开发目的,我喜欢使用插件的非缩小版本,以防我需要设置Firebug断点或因任何原因查看它。

现在,当我打包我的应用程序并进行部署时,为了提高效率,我宁愿切换到插件的缩小版本。我知道这样做的唯一方法是手头有两个版本,然后手动更改我的视图中的所有引用(我使用MVC)指向缩小版本,然后打包和部署。理想情况下,我也会缩小(也许会混淆)我自己的javascript文件。

有没有人知道使用非缩小插件(为了便于阅读)和使用缩小版本(为了提高效率)进行开发的更好,更有效的方法?你可以指点我谈论它的任何文章吗?我对如何处理javascript部署非常陌生,并且很可能会采用最佳实践。

感谢。

2 个答案:

答案 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密钥和所有其他类型的依赖项也很有用。