【问题标题】:What's the difference between concat and uglify and minify?concat 和 uglify 和 minify 有什么区别?
【发布时间】:2013-11-10 17:54:53
【问题描述】:

grunt 中的 concat、uglify 和 minify 任务有什么区别?我为我网站的所有 javascript 任务设置了一个 uglify 任务,它似乎既缩小又连接它们。 Grunt 的网站对如何配置每个任务有很好的描述,但似乎并没有解释每个任务的实际作用。

【问题讨论】:

    标签: concatenation gruntjs minify uglifyjs


    【解决方案1】:
    • 串联只是将所有静态文件附加到一个大文件中。

    • 缩小只是删除不必要的空格和多余的/可选的标记,如大括号和分号,并且可以通过使用 linter 来反转。

    • 丑化将代码变成“不可读”形式的行为,即重命名变量/函数以隐藏原意...它也是不可逆转的。

    【讨论】:

    • 鉴于uglify grunt任务可以执行concat,你知道为什么yeoman generators在uglifying之前运行grunt concat任务吗?
    • 这个问题代表了对concat和uglifying区别的误解。当您将 2 个或更多文件连接在一起时,会创建一个新文件。如果您尝试在连接之前进行 uglify,那么您需要对 n 个文件进行 uglify,然后连接所有这些文件。将它们全部连接起来然后只在集合文件上运行 uglify 效率要高得多。 tldr;在 concat 之后运行 uglify,因此您只需要运行 uglify 1 次而不是 n 次
    • 丑化不一定是为了“隐藏意图”,可能只是为了节省空间,将aLongMethodName()转换为a(),变量名也转换为简写形式。
    • 嗯,不仅如此。想象一下从另一个 js 文件中调用的库文件,如果您首先单独 uglify 文件然后连接它们,您的 js 文件将不再能够引用该库,因为库中的名称将被更改。所以先concat一切,然后丑化结果。
    【解决方案2】:

    串联 - 合并所有指定文件以创建一个新的单个文件。

    缩小 - 这意味着所有不必要的空格和多余的可选标记都将被删除。

    示例 - self.description = 'Hello'
    缩小版将是 - self.description='Hello'

    丑化 - 就是把代码转换成核心逻辑不容易理解的格式。为了做同样的事情,它重命名变量和它们的引用,它用更短的名称重命名参数等等。它只是混淆了业务逻辑,所以没有人可以轻易理解它。

    例子-

    self.description = 'Hello';
    function(self.description){}
    

    丑化版将是-

      j.description = 'Hello';
      function(j.description){}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      相关资源
      最近更新 更多