是否有任何脚本和/或在线工具可以逆转缩小的效果?

我特别想缩小缩小的JavaScript文件的大小。变量重命名不是一个大问题,我希望它具有足够的可读性以能够分析执行。

评论

在所有人大声疾呼之前,可以提出并回答自己的问题。实际上,它很酷,并且可以帮助网站!好问题,WPrecht :-)

谢谢。我以为我们会在内部Beta版中做类似的事情来帮助对该网站进行播种。

@Keelan:不幸的是有些人不同意。防万一

@ 0xC0000022L Er ...已删除。是你的情况吗?

@SamB不是事实,它已被删除。否。在过去六年中已将其删除(实际上,它在关闭后大约一个月就删除了,大约是在我发表评论时)。有了足够的声誉,您仍然可以看到它。

#1 楼


我专门在寻找最小化的JavaScript文件。变量重命名不是一个大问题,我希望它具有足够的可读性以能够分析执行。


您的问题标题仅表示反转最小化的代码,不一定理解它。但是,如果您想了解它,Opera Dragonfly听起来像一个工具,您可能会发现它非常有用...

我一直使用Dragonfly来分析精简代码。除了拥有漂亮的打印机外,它还具有非常方便的分析功能。

这就是jQuery.min的全部荣耀...


我在这里圈出的按钮是漂亮的打印机,它突然使代码变成了这样的东西:


这是一个不错的开始,但是如果不了解它,仍然很难理解

首先,您需要确定您要了解的缩小文件功能的哪一部分。事件断点非常方便,因为您可以为几乎任何用户输入或元素的负载设置它们。例如,如果我想查看发生鼠标悬停事件时jQuery中发生的情况,则可以为“鼠标悬停”添加事件断点。这样,当我将鼠标移到特定元素上时,我便可以看到代码的入口点。

当代码遇到断点时,您将进入一种可以执行的模式,就像在许多情况下一样DOM调试器与您正在检查的代码的当前状态进行交互。但是您可以通过将鼠标悬停在代码的各个部分上来做到这一点,因此记住代码上下文确实非常容易。



您还可以通过与“源”窗口相同的方式,检查“脚本”选项卡中“状态”子选项卡中的作用域以及谁引用了哪些内容。因此,您可以查看一个变量是否覆盖另一个变量,或者某个地方发生了奇妙的闭包魔术,或者该变量实际源自什么范围。另外,如果您查看DOM元素,则可以将鼠标悬停在该元素上以在页面上突出显示它。 (请参见最后一张图片。)



Dragonfly控制台也具有此鼠标悬停功能...而且所有内容都具有制表符补全功能,因此您可以从任何状态执行任何代码,在任何执行级别进行检查,重新分配变量,运行测试,或仅通过[Tab]完成导航以进行几乎所有事情以弄清您正在查看的代码的作用。


Opera的检查员一定会帮助您逆转和理解最小化或混淆的代码。

评论


那么,缩小器将函数名称,变量等替换为无意义的短名称吗?在不可能的情况下,是否可以找回原始代码?

– Erran Morad
9月13日18:44

不幸的是没有。如果无法访问原始代码本身,就无法知道曾经被命名的内容。 (此外,这是在Opera切换其内部之前很久以前编写的,因此并不十分准确。目前,最好的调试器imo实际上现在是Chrome浏览器,自2013年以来发生了很多变化)

–地衣
9月13日20:39

#2 楼

我更喜欢使用Google Chrome开发人员工具中内置的漂亮打印机。

这是缩小的代码:


按下漂亮打印按钮后,您会得到以下内容:


评论


那么,缩小器将函数名称,变量等替换为无意义的短名称吗?在不可能的情况下,是否可以找回原始代码?

– Erran Morad
9月13日18:43

#3 楼

JSBeautifier是一个很好的起点。通常,它取决于所使用的缩小方法。这一个格式化代码并有很多选择。它还可以解压缩“打包”脚本(与Dean Edward的打包器一起打包)。此代码的便捷变体可以作为Firefox插件Javascript Deminifier使用。

评论


那么,缩小器将函数名称,变量等替换为无意义的短名称吗?在不可能的情况下,是否可以找回原始代码?

– Erran Morad
9月13日18:43

如果函数和变量名已被替换,则无法恢复其原始名称。

– WPrecht
9月14日20:32

#4 楼

我最近在一个最小的JavaScript文件的50 + KB上尝试了http://www.jsnice.org/,该文件包含很多动态修改代码,Cordova的运行时拒绝执行(针对Windows Phone 8.1和Windows 10的应用)。结果令人赞叹,因为它可以识别出数千个开源项目中未缩小的匹配代码片段。希望以后对您和其他人有帮助。

评论


jsnice是最好的。当不重构变量名时,缩小就没有太大价值,并且此列表上的其他任何项都无法为您做到这一点。

– Stuart P. Bentley
17-6-26在7:27