【问题标题】:Does it make sense to do both minify and uglify?同时进行缩小和丑化是否有意义?
【发布时间】:2015-11-14 12:03:55
【问题描述】:

鉴于 uglification 在过程中涉及到一些缩小,那么同时进行缩小和 uglify 是否仍然有意义?如果是,应该先缩小还是丑化?只做uglify就够了吗?如果两者都完成,代码会更加混乱吗?

【问题讨论】:

  • 那个问题没有回答我的问题。没有解释两者都做是否有意义。
  • 有一个答案说:缩小只是删除不必要的空格和多余/可选的标记,如大括号和分号,并且可以通过使用 linter 来反转 uglification 是将代码转换为“不可读”形式,即重命名变量/函数以隐藏原始意图......它也是不可逆的。这意味着它们是两个不同的东西
  • 我看了npmjs.com/package/gulp-uglify 似乎说 uglify 涉及缩小文件。因此,我很困惑。
  • Gulp:构建系统自动化任务:缩小和复制所有 JavaScript 文件,静态图像.. 它是一个构建系统,它也缩小,它不是丑化使用缩小

标签: javascript obfuscation minify uglifyjs


【解决方案1】:

两者之间没有真正的区别。甚至 Uglify 也称自己为缩小工具包。

在比较 JS 缩小和 CSS 缩小时,区别可能更相关 - CSS 缩小只涉及删除空格 - 原始代码保持不变。

使用 JS 不仅可以删除空格,还可以对代码进行转换,例如将变量名称截断为单个字符。

缩小 JavaScript 不仅会使源代码更小,而且还会降低代码的可读性或混淆代码。但是不要假设缩小或丑化,或任何你想称之为的东西,是一种安全措施。这不是加密。代码更难阅读,但并非不可能阅读,虽然通常不可能将缩小的代码恢复为原始形式,但可以“美化”它并使其更具可读性。

同时缩小和丑化是没有意义的,因为大多数缩小器都会删除空格和不必要的字符,以及混淆代码。您所做的只是引入另一个构建步骤。

【讨论】:

    【解决方案2】:

    缩小只是删除不必要的空格和多余的空格,如 cmets 和分号。并且可以在需要时反转回来。

    丑化是通过改变变量名、函数名等将代码转化为“不可读”的形式,以隐藏原始内容。一旦使用,就无法将其逆转。

    像 UglifyJS 这样的一些库在使用时会通过删除不必要的部分来进行缩小。但总的来说,丑化会使代码变得不可读。

    缩小代码可以加快页面加载速度,让访问者和搜索引擎感到满意,而且它也具有可读性。大多数主流浏览器在执行前都会缩小代码。

    【讨论】:

    • 那么我们是否应该对 JS 进行丑化,使其不被任何人复制?丑化的真正目的是什么?
    • @AdityaBokade 它可以被别人复制,但它不会是可读的格式。例如变量或函数名称变成单个字母......因此,理解任何声明的真正目的将变得非常复杂。如果 JS 文件太大,除非重写整个代码,否则几乎无法理解。
    猜你喜欢
    • 2017-02-09
    • 2018-04-13
    • 2013-02-24
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 2012-08-17
    相关资源
    最近更新 更多