【问题标题】:Tool to Unminify / Decompress JavaScript [closed]解压缩/解压缩 JavaScript 的工具 [关闭]
【发布时间】:2010-11-04 21:58:32
【问题描述】:

是否有任何命令行脚本和/或在线工具可以逆转缩小效果,类似于 Tidy 清理可怕的 HTML 的方式?

(我特别希望取消缩小一个缩小的 JavaScript 文件,因此变量重命名可能仍然是一个问题。)

【问题讨论】:

  • 对于那些可能不知道的人,缩小将内部变量名称更改为单个字母并删除代码 cmets。无法自动撤消这些更改。
  • @DanielAllenLangdon 好点。我已经编辑了这个问题,所以它不再暗示缩小不会改变变量名。
  • FWIW...刚找到JS NICE jsnice.org
  • marcusjenkins.com/linux/… 对我来说效果很好。
  • 对于@DanielAllenLangdon:jsnice.org 甚至可以对 30k 的 angularjs 代码进行解压缩和去混淆。

标签: javascript code-formatting minify compression unminify


【解决方案1】:

Chrome 开发者工具内置了此功能。调出开发者工具(按 F12 是一种方式),在 Sources 选项卡中,左下方的栏有一组图标。 “{}”图标是“Pretty print”,可按需进行转换。

更新:IE9“F12 开发人员工具”在“工具”图标下的“脚本”选项卡中也有“格式化 JavaScript”功能。 (请参阅F12 The best kept web debugging secret 中的提示 #4)

【讨论】:

  • 对于我试图取消缩小的特定 .js,这种方法效果最好,干杯。
  • 现在位于“源”选项卡中,而不是“脚本”选项卡中。
  • @mhenry1384:是的,Chrome 确实重命名了标签。我相应地更新了答案。
  • 是的! (我们的应用程序没有我所知道的 js 调试/开发模式——幸好我们没有缩短/转换变量名。)
  • 请注意:Chrome 有时会弄乱 JavaScript 代码。例如,if (a) /regex/.match(foo); 被打印为 if (a)\n / /regex/ .\nmatch(foo);,这是一个语法错误。
【解决方案2】:

我对 jsbeautifier.org 的输出内容并不满意,所以我进行了更多搜索并找到了这个网站:http://www.centralinternet.com.br/javascript-beautifier

对我来说效果非常好。

【讨论】:

    【解决方案3】:

    尽管JSPretty 的界面非常漂亮,但它是一个很好的免费在线工具,可以让 javascript 源代码易于阅读。您可以强制执行您喜欢的缩进类型,它还可以检测混淆。

    【讨论】:

      【解决方案4】:

      http://unminify.appspot.com/ 用于 unminify javascript 和 json 的好工具

      【讨论】:

        【解决方案5】:

        Pretty Diff 将以符合JSLintJSHint 空白算法的方式美化(漂亮打印)JavaScript。

        【讨论】:

        • 具有讽刺意味的是,该网站如此不漂亮,但这是一个很酷的工具。
        【解决方案6】:

        类似于Stone 的回答,但适用于 Windows/.NET 开发人员:

        如果您有 Visual Studio 和 ReSharper - 格式化 Javascript 的一个简单替代方法是:

        • 用 Visual Studio 打开文件;
        • 点击 ReSharper > 工具 > 清理代码(Ctrl+E、C);
        • 选择“默认:重新格式化代码”,点击确定;
        • 打开啤酒。

        【讨论】:

          【解决方案7】:

          点击这些链接进行 JS deminification。这将作为扩展安装在 FF 上,帮助您在运行时调试 js。

          https://addons.mozilla.org/en-US/firefox/addon/javascript-deminifier/eula/141018?src=dp-btn-primary

          【讨论】:

            【解决方案8】:

            试试这个,用代码着色:

            http://labs.swelen.com/tools/javascript/beauty.html

            【讨论】:

              【解决方案9】:

              如果您有 Mac 和 TextMate - 格式化 Javascript 的简单替代方法是:

              1. 使用 Textmate 打开文件。
              2. 单击 > 捆绑包 > JavaScript > 重新格式化文档
              3. 打开啤酒。

              【讨论】:

              • 现在提供啤酒 :)
              【解决方案10】:

              在 Firefox、SpiderMonkey 和 Rhino 中,您可以将任何代码包装到匿名函数中并调用其 toSource 方法,这将为您提供格式良好的函数源代码。

              toSource 也剥离 cmets。

              E. g.

              (function () { /* Say hello. */ var x = 'Hello!'; print(x); }).toSource()
              

              将转换为字符串:

              function () {
                  var x = "Hello!";
                  print(x);
              }
              

              P. S.:它不是一个“在线工具”,但所有关于一般美化技术的问题都作为这个工具的重复而关闭。

              【讨论】:

              • 有趣。我在 2.5 年前问过这个问题,所以我觉得编辑标题为时已晚,但我仍然喜欢同时看到在线和离线选项。感谢您的参与。+1
              • 在 Firefox 上似乎不再工作了
              【解决方案11】:

              大多数 IDE 还提供自动格式化功能。例如在 NetBeans 中,只需按 CTRL+K

              【讨论】:

                【解决方案12】:

                我不确定您是否需要源代码。 http://www.blackbeltcoder.com/Resources/JSFormatter.aspx 有一个免费的在线 JavaScript 格式化程序。

                【讨论】:

                  【解决方案13】:

                  如果一个人在 JS 中使用 Firefox 的可能性更大。如果它的 Firefox 插件是为了救援。下面的一个特别有用。

                  https://addons.mozilla.org/en-US/firefox/addon/phoenix/

                  【讨论】:

                    【解决方案14】:

                    作为替代方案(因为直到现在我才知道 jsbeautifier.org),我使用了一个书签,它重新启用了 Dean Edward 的 Packer 中的解码按钮。

                    我找到了说明和书签here

                    这是书签(以防网站关闭)

                    javascript:for%20(i=0;i<document.forms.length;++i)%20{for(j=0;j<document.forms[i].elements.length;++j){document.forms[i].elements[j].removeAttribute(%22readonly%22);document.forms[i].elements[j].removeAttribute(%22disabled%22);}}
                    

                    【讨论】:

                      【解决方案15】:

                      知道了! JSBeautifier 正是这样做的,您甚至可以选择自动格式化。

                      【讨论】:

                      • stackoverflow-then-google 而不是 google-then-stackoverflow? :))))
                      • 我为“javascript formatter online”做了谷歌
                      • 这个 FireFox 插件使用 JSBeautifier 来取消缩小 javascript,这样你就可以在 FireBug 的 js 调试器中设置断点了!!:addons.mozilla.org/en-US/firefox/addon/javascript-deminifier
                      【解决方案16】:

                      你不能只使用 javascript 格式化程序 (http://javascript.about.com/library/blformat.htm) 吗?

                      【讨论】:

                      • +1 的答案也有效。 fabien 刚好先回复了
                      • 这仅回答问题的“解压缩”部分。
                      • 不,这不是很好。它破坏了代码...... :(
                      【解决方案17】:

                      你可以使用这个:http://jsbeautifier.org/ 但这取决于您使用的 minify 方法,此方法仅格式化代码,不会更改变量名,也不会解压缩 base62 编码。

                      编辑:实际上它可以解压“打包”脚本(使用 Dean Edward 的打包器打包:http://dean.edwards.name/packer/

                      【讨论】:

                      • +1 - 这个方法我以前用过,jsbeautifier.org 服务很好。
                      • 谢谢。这正是我想要的。
                      • 不,我说的是 62 进制:dean.edwards.name/packeren.wikipedia.org/wiki/Base_62
                      • 有没有这样一种工具,可以“更改变量名”并且仍然知道 JS 语法不会破坏代码?
                      • 如果可以的话,我会增加 10 次。刚刚把我从浪费的一天中拯救出来!
                      猜你喜欢
                      • 2013-10-30
                      • 2011-06-19
                      • 2010-10-30
                      • 2011-03-18
                      • 1970-01-01
                      • 1970-01-01
                      • 2014-01-07
                      • 2019-03-23
                      相关资源
                      最近更新 更多