Unminify/Decompress JavaScript

Оригинальный вопрос

Возможно, это глупый вопрос, но есть ли способ в 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 только около трех недель, поэтому, вероятно, есть вещи, которые скрыты для меня.

Если в программе нет способа сделать это, что для вас лучше всего подходит? Я видел на другом подобном посту, который рекомендует сайт http://jsbeautifier.org/, поэтому, возможно, придется это сделать, но облегчит жизнь, если он будет построен в VS 2013

Спасибо заранее, поскольку я знаю, что кто-то сможет помочь мне здесь.


Обновление:

Я просмотрел VS 2013 и не нашел ничего, что могло бы помочь мне с этой проблемой, как я уже говорил, прежде чем они, возможно, некоторые вещи, которые я пропустил (некоторые настройки), поэтому, я думаю, если это не может быть сделано в VS, что следующая лучшая вещь для работы? Кажется, я столкнулся с большим количеством JS, которое было минимализовано, и хотел бы, чтобы быстрый и лучший способ выполнить эту работу. Я пару сайтов, с которыми я пытался, похоже, имеет проблемы с ним, есть ли программа, которую я мог бы установить, которая просто позволит мне сократить ее с помощью горячей клавиши или чего-то еще. Это было бы очень удобно.


Обновление 2:

Поэтому я думаю, что безопасно сказать, что это невозможно сделать в VS2013, или, вообще говоря, из-за отсутствия имен var и т.д. Поэтому я видел несколько ссылок и программ, которые позволяют вам форматировать код. Есть ли способ в VS2013? И снова, если не самый надежный веб-сайт/программа, которую я могу использовать для этого. Как я уже сказал, я вижу, что были ответы, и я ценю их всех. Я оставлю этот вопрос открытым на некоторое время, чтобы привлечь больше людей, чтобы посмотреть на него и, возможно, дать лучший ответ. Продолжай!


Обновление 3:

Если у кого-то есть больше информации об этом, пожалуйста, разделите. Я все еще смотрю вокруг, а затем жду, когда кто-нибудь придумает что-то удивительное для этого. Однажды люди... Один день!

Ответы

Ответ 1

Дело в том, что вы не можете действительно "разогнать" свой код, так как некоторые данные уже были потеряны - например. имена переменных. Однако вы можете переформатировать его в более удобочитаемую форму.

  • В соответствии с этим вопросом, поскольку VisualStudio 2012 вы можете просто использовать Ctrl + E, D сочетание клавиш
  • Если вышеуказанное неверно, это расширение для VS 2010: http://visualstudiogallery.msdn.microsoft.com/41a0cc2f-eefd-4342-9fa9-3626855ca22a, но я не уверен, работает ли оно с VS 2013
  • Существует расширение для VisualStudio, называемое ReSharper, которое может переформатировать javascript несколькими способами.
  • Также есть онлайн-форматировщики, уже упомянутые в других ответах (если ваш код является конфиденциальным, я бы посоветовал некоторую паранойю, проявленную при загрузке источников и использовании их локально).
  • Также вы всегда можете найти неиниминированную версию нужной библиотеки на веб-сайтах
  • Кроме того, есть WebStorm IDE из JetBrains, который способен переформатировать JS - вы можете скачать пробную версию с единственной целью переформатирования ваших мини-скриптов:)
  • Если это просто для облегчения отладки, вы можете использовать исходные карты

Кроме того, вот несколько связанных вопросов:

Как автоматически отступать исходный код? < - это для VS2010, но выглядит многообещающим, возможно, это поможет вам, если оно поддерживает JavaScript (и это происходит с VS2012 в соответствии с поддержкой MS):

Ctrl + E, D - Отформатировать весь документ
Ctrl + K, Ctrl + F - Выбор формата

reindent (reformat) минимизировал файл jquery/javascript в visual studio

Visual Studio 2010 не может форматировать сложные документы JavaScript

Форматирование кода Visual Studio

как сделать работу с форматированием javascript в студии?

Я не уверен, что они разработали рабочий способ переформатировать JS, но я видел несколько ответов, которые могут быть полезны может. Я просто вставляю это здесь только FYI.

Добавлено 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

Его просто односторонняя трансформация.... извините, в обычных случаях вы не получите что-то понятное из мини-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",
------

И теперь у источника minify:

(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 

Таким образом, его отображали как-то, чтобы сделать его более коротким. здесь, чтобы минимизировать что-то Люди обычно используют это, так что нет пути назад

вы можете просто отформатировать его посмотреть здесь

Ответ 3

Лично я не могу придумать причину, чтобы никогда не уничтожать код ^:

  • Если вы используете скомпилированный js файл (a-la google закрытие) и хотите отлаживать более читаемый код, использовать исходные карты, доступные для хорошо -поддержанных библиотек (говоря о jQuery, если он обслуживается с CDN Google, он уже сопоставляется с правильным источником)

  • Если вы используете только миниатюрный js файл с пробелом и хотите отлаживать более читаемый код, вы можете просто переключить красивую печать в браузере. Это, по-видимому, наилучшим образом соответствует вашему вопросу.

  • Если вы используете одно из указанных выше и хотите изменить исходный код для стороннего js файла, не делайте этого. Любой будущий выпуск будет отменять ваши изменения - вместо этого рассмотрите один из многих шаблонов, чтобы расширить рамки (или, возможно, сделать некоторые утиные перфорации в зависимости от точного сценария.)

Другие ответы, похоже, хорошо охватывают процесс "unminification" (максимизация?), но стоит сначала сделать необходимый шаг.

^ - За исключением случаев, когда управление версиями падает, нет резервных копий, и единственная версия оставшегося файла - это уменьшенная копия в кеше браузера. Не спрашивайте.

Ответ 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"] ? ""

Но, конечно, что это не делает, добавляются комментарии, которые были удалены с помощью minifier. И если код также был obfuscated, тогда это будет намного меньше поскольку имена переменных будут изменены (например, var a вместо var flashVer). Подробнее см. здесь.

Ответ 5

Как вы можете видеть из других ответов, нет возможности воссоздать миниатюрный Javascript в его первоначальной форме, это сжатие с потерями. Лучшее, что вы можете сделать, это сделать его читаемым, переформатировав его.

Если код является открытым исходным кодом, то вполне вероятно, что код будет существовать в сыром состоянии на какой-либо форме сайта управления версиями или в виде zip. Почему бы просто не загрузить исходную версию, если она доступна?