代码之家  ›  专栏  ›  技术社区  ›  Matt Anxo P

在开发和部署期间,我应该使用jquery插件的小型版本还是常规版本?

  •  5
  • Matt Anxo P  · 技术社区  · 14 年前

    正如你们所知道的,大多数jquery(或者javascript,就这点而言)插件都可以作为常规格式的代码、小型化的版本或者两者同时下载。出于开发目的,我喜欢使用插件的非小型版本,以防我需要设置Firebug断点或出于任何原因查看它。

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

    有没有人知道一种更好、更有效的方法来开发非小型化插件(为了可读性)和部署小型化版本(为了效率)?你有什么文章可以指给我听吗?我对如何处理Javascript部署非常陌生,可能会学习最佳实践。

    谢谢。

    2 回复  |  直到 11 年前
        1
  •  4
  •   Jaime    14 年前

    <%= Html.IncludeJQuery() %>
    

    <%= Html.IncludeCorrectVersionOfScript("jquery-1.4.2.js") %>
    

    更新:

    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);
        }
    }
    

    请注意,这是非常简化的版本(不验证字符串等)。

    现在,您可以使用isdebuggingEnabled或web.config中的配置或静态配置来定义是否要包括调试版本的最小化版本…

        2
  •  1
  •   Anurag    14 年前

    这是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键和所有其他类型的依赖项,这些依赖项在环境之间已经存在或可能发生变化。