15

原始问题

这可能是一个愚蠢的问题,但在 VS 2013 中有没有办法取消 JavaScript 的最小化?

只要确保我们都在同一页面上。

缩小:

var flashVer=-1;if(navigator.plugins!=null&&navigator.plugins.length>0){if(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]){var swVer2=navigator.plugins["Shockwave Flash 2.0"]?"

这只是一个例子,以确保我们都知道我在说什么。据我所知,没有办法做到这一点。我只使用 VS 2013 大约 3 周,所以可能还有一些东西对我来说是隐藏的。

如果在程序中没有办法做到这一点,那么下一个最好的事情是什么?我确实在另一篇类似的帖子上看到了推荐网站http://jsbeautifier.org/,所以可能必须在之前给出,但如果它内置到 VS 2013 中会让生活更轻松

提前感谢,因为我知道有人可以在这里帮助我。


更新:

我环顾了 VS 2013 并没有发现任何可以帮助我解决这个问题的方法,就像我之前所说的那样,他们可能错过了一些我错过的东西(某些设置)所以我想如果它不能在 VS 中完成,那么这项工作的下一个最佳选择是什么? 我似乎遇到了相当数量的小型化 JS,并希望以最快和最好的方式完成工作。我尝试过的几个网站似乎有问题,是否有可以安装的程序让我可以使用热键或其他东西来快捷方式。那会很方便。


更新 2:

所以我认为可以肯定地说这不能在 VS2013 中完成,或者因为缺少 var 名称等等。因此,我看到了一些允许您格式化代码的链接和程序。VS2013中有没有办法处理?如果不是,我可以用来执行此操作的最可靠的网站/程序是什么。就像我说的那样,我可以看到已经有了答案,我很感激所有的答案。我将把这个问题搁置一段时间,让更多的人看到它并可能给出更好的答案。坚持下去,伙计们!


更新 3:

如果有人对此有更多信息,请分享。我现在还在四处张望,然后等待有人为此想出一些惊人的东西。一日人……一日!

4

6 回答 6

7

问题是你不能真正“取消”你的代码,因为一些数据已经丢失了——例如变量名。不过,您可以将其重新格式化为更易读的形式。

  1. 根据这个问题,从 VisualStudio 2012 开始,您可以使用Ctrl+ ED键盘快捷键
  2. 如果上述不正确,VS 2010 有这个扩展:http: //visualstudiogallery.msdn.microsoft.com/41a0cc2f-eefd-4342-9fa9-3626855ca22a但我不确定它是否适用于 VS 2013
  3. VisualStudio 有一个名为ReSharper的扩展,它可以用几种不同的方式重新格式化 javascript。
  4. 还有其他答案中已经提到的在线格式化程序(如果您的代码是机密的,我建议您通过下载源代码并在本地使用它们来表现出一些偏执狂)。
  5. 此外,您可能总是尝试在互联网上找到所需库的未缩小版本
  6. 此外,JetBrains 的WebStorm IDE 能够重新格式化 JS - 您可以下载试用版,仅用于重新格式化您的缩小脚本:)
  7. 如果这只是为了使调试更容易,您可能需要使用源映射

另外,这里有一堆相关的问题:

如何自动缩进源代码?<-- 这是针对 VS2010 的,但它看起来很有希望,如果它支持 JavaScript,也许会对您有所帮助(根据 MS 支持,它自 VS2012 起就可以):

Ctrl+ E, D- 格式化整个文档
Ctrl+ K, Ctrl+ F- 格式选择

重新缩进(重新格式化)在 Visual Studio 中最小化 jquery/javascript 文件

Visual Studio 2010 无法格式化复杂的 JavaScript 文档

Visual Studio 代码格式化程序

如何使 Visual Studio javascript 格式化工作?

我不确定他们是否想出了一种重新格式化 JS 的工作方式,但我已经看到了一些可能会有所帮助的答案——我只是将其粘贴在这里仅供参考。

添加 03.06.2014:

http://www.jsnice.org/

这个工具也很有用,它甚至会尝试推断缩小的名称。正如他们网站上所说:

We will rename variables and parameters to names that we learn from thousands of open source projects.
于 2013-09-29T21:01:25.243 回答
5

就个人而言,我想不出任何理由来取消代码^:

  • 如果您正在使用已编译的 js 文件(a-la google 闭包)并希望调试更多可读代码,请使用可用于良好支持的库的源映射(说到 jQuery,如果它是从 google CDN 提供的,它已经映射到正确的来源)

  • 如果您正在使用仅包含空格的缩小 js 文件并希望调试更易读的代码,则可以在浏览器中切换漂亮的打印这似乎最适合您的问题。

  • 如果您使用上述任何一种并想修改第三方js文件的源代码,请不要。任何未来的版本都将取消您的更改 - 而是考虑扩展框架的众多模式之一(或者,也许,根据确切的场景做一些鸭子打孔。)

其他答案似乎很好地涵盖了“缩小”过程(最大化?),但值得确保它是第一步的必要步骤。

^ - 除非版本控制失效,否则没有备份,并且文件的唯一版本是浏览器缓存中的缩小副本。不要问。

于 2013-10-02T01:09:16.893 回答
5

它只是一种单向转换....抱歉,在正常情况下,您不会从缩小的 JavaScript 中得到可以理解的东西!

快速浏览一下 JQuery 源代码:

(function( window, undefined ) {

// Can't do this because several apps including ASP.NET trace
// the stack via arguments.caller.callee and Firefox dies if
// you try to trace through "use strict" call chains. (#13335)
// Support: Firefox 18+
//"use strict";
var
    // The deferred used on DOM ready
    readyList,

    // A central reference to the root jQuery(document)
    rootjQuery,

    // Support: IE<10
    // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
    core_strundefined = typeof undefined,

    // Use the correct document accordingly with window argument (sandbox)
    location = window.location,
    document = window.document,
    docElem = document.documentElement,

    // Map over jQuery in case of overwrite
    _jQuery = window.jQuery,

    // Map over the $ in case of overwrite
    _$ = window.$,

    // [[Class]] -> type pairs
    class2type = {},

    // List of deleted data cache ids, so we can reuse them
    core_deletedIds = [],

    core_version = "1.10.2",
------

现在在缩小源:

(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,
l=e.jQuery,u=e.$,c={},p=[],f="1.10.2", ....

我想现在你看到了 =>

window       => e
undefined    => t
readyList    => n
rootjQuery   => r
core_strundefined  => i
location     => o
document     => a 

所以它以某种方式映射以使其更短在这里看起来以缩小某些东西人们通常使用它所以没有回头路

你可以把它格式化看这里

于 2013-09-28T22:51:15.367 回答
2

正如您从其他答案中看到的那样,没有办法将缩小的 Javascript 重组回其原始形式,这是一种有损压缩。您可以做的最好的事情是通过重新格式化使其可读。

如果代码是开源的,那么代码很可能会以原始状态存在于某种形式的版本控制站点上或以 zip 的形式存在。为什么不直接下载原始版本(如果有)?

于 2013-09-29T22:04:45.087 回答
2

如果代码只是被缩小了,那么您可以自动做的最好的事情就是重新格式化以使其更具可读性。一种方法是使用在线格式化程序/美化器。例如,将您发布的代码行复制并粘贴到http://jsbeautifier.org/http://www.jspretty.com/中,它会产生如下内容:

var flashVer = -1;
if (navigator.plugins != null && navigator.plugins.length > 0) {
    if (navigator.plugins["Shockwave Flash 2.0"]
            || navigator.plugins["Shockwave Flash"]) {
        var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? ""

但是当然,这些不做的是将任何已被压缩器删除的注释放回原处。如果代码也被混淆了,那么它的可读性就会大大降低,因为变量名称会发生​​变化(例如var a,而不是var flashVer)。有关详细信息,请参见此处

于 2013-09-29T14:41:08.770 回答
1

有一个在线工具可以取消 Javascripts

http://jsbeautifier.org/

也适用于 CSS

http://mrcoles.com/blog/css-unminify/

于 2013-10-04T12:35:46.017 回答