【问题标题】:Unminify / Decompress JavaScript解压/解压 JavaScript
【发布时间】:2013-10-02 14:21:06
【问题描述】:

原始问题

这可能是一个愚蠢的问题,但是 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:

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

【问题讨论】:

  • 问题的 PHP 部分在哪里??你为什么用 php 标记问题?
  • 只是为了让更多来自各个领域的人看到我的问题。看到它的人越多,我获得更好答案的机会就越大。 JavaScript 可以与我放置的每个标签一起使用。并且很有可能如果你了解 PHP,你就会了解 JavaScript。
  • 这是一个普遍的问题还是仅适用于 VS?
  • 这是一个以VS开头的问题,然后进入“general”。如果您阅读了我在更新中应该解释的内容。如果不看看一些答案。

标签: javascript php jquery html minify


【解决方案1】:

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

  1. According to this question,从 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. 如果只是为了使调试更容易,您可能需要使用source maps

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

How to automatically indent source code? and it does since VS2012 according to MS support):

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

reindent(reformat) minimized jquery/javascript file in visual studio

Visual Studio 2010 can't format complex JavaScript documents

Visual Studio code formatter

how to make visual studio javascript formatting work?

我不确定他们是否找到了重新格式化 JS 的可行方法,但我看到了一些可能有帮助的答案 - 我只是将其粘贴在这里仅供参考。 p>

添加 03.06.2014:

http://www.jsnice.org/

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

We will rename variables and parameters to names that we learn from thousands of open source projects.

【讨论】:

  • 感谢您的回答,非常有帮助并且付出了很多努力。我将等待更多的人看到这个只是为了找出是否有其他人有更多的信息。
  • 刚刚看到您发布的更新,该网站非常酷。感谢分享。
【解决方案2】:

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

    1234563 google CDN 它已经映射到正确的来源) 1234563 这似乎最适合您的问题。
  • 如果您使用上述任何一种方法并想修改第三方 js 文件的源代码,请不要这样做。任何未来的版本都会取消您的更改 - 而是考虑使用多种模式之一来扩展框架(或者,可能是 do some duck punching,具体取决于具体情况。)

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

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

【讨论】:

    【解决方案3】:

    这只是一种单向转换....抱歉,在正常情况下,您不会从缩小的 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 
    

    所以它以某种方式映射以使其看起来更短 here 以缩小某些东西 人们通常使用它,所以没有退路

    你可以直接格式化look here

    【讨论】:

      【解决方案4】:

      如果代码只是被缩小,那么您可以自动做的最好的事情就是重新格式化以使其更具可读性。一种方法是使用在线格式化程序/美化器。例如。将您发布的代码行复制并粘贴到 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"] ? ""
      

      当然,这些不做的是将任何已被压缩器删除的 cmets 放回原处。如果代码也被混淆,那么它的可读性会大大降低,因为变量名将会改变(例如var a 而不是var flashVer)。详情请参阅here

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 有时我似乎会遇到没有其他副本的随机 JS。 (或者我找不到)谢谢你的回答。
        • 另外,Komodo IDE 在其编辑器中提供了 jsbeautify。我很惊讶VS2013没有类似的插件系统。
        【解决方案6】:

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

        http://jsbeautifier.org/

        也适用于 CSS

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

        【讨论】:

        • 感谢您的回答,但您提供的第一个链接已经说过,第二个链接不相关。请在发布自己的答案之前阅读其他答案。
        猜你喜欢
        • 2014-10-30
        • 2017-09-27
        • 2010-11-04
        • 1970-01-01
        • 2014-04-21
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多