2011-12-28 8 views
3

Я пытаюсь понять JavaScript минификация сжатия и процессов и имеют несколько вопросов, на них:JavaScript минификация и сжатие

  1. Поскольку минификация делает код трудно отлаживать, это можно сделать по требованию де- минимизация на стороне клиента, чтобы скрыть случаи, когда вам действительно нужно отлаживать и расследовать что-либо на веб-сайте?
  2. Я помню, где-то читал, что можно включить сжатие всех ресурсов (например, изображения, CSS, JavaScript и т. Д.), Установив некоторые параметры на веб-сервере Apache. Есть ли какая-либо разница в сжатии JavaScript, выполненном на уровне Apache, и что сделано с помощью таких инструментов, как YUI Compressor?

Может кто-нибудь помочь мне узнать выше?

В некоторых случаях, когда мне действительно нужно было бы деактивировать мои файлы JavaScript, допустим, ошибка JavaScript произошла в строке нет. X. При использовании минитипированных файлов было бы очень сложно узнать, какой блок кода вызвал эту ошибку в ,, поскольку все строки завернуты в миниатюрный файл. Как вы, ребята, расследуете и отлаживаете при таких обстоятельствах? Другой пользователь также упомянул об этой проблеме отладки в Packed/minified javascript failing in IE6 - how to debug? вопросах (немного специфичный для IE6, хотя).

ответ

2

Поскольку минификация делает код трудно отлаживать, можно сделать по требованию де-минификация на стороне клиента, чтобы покрыть вверх для случаев , где вы на самом деле нужно отлаживать и исследовать что-то на Веб-сайт?

Сорт. Укомплектованный javascript имеет ту же структуру, он просто делает такие вещи, как удаление лишних пробелов и сокращение имен переменных. Таким образом, вы можете легко сделать код читаемым снова, либо вручную, либо с помощью скрипта, но вы не можете восстановить имена переменных, поэтому с этим будет все труднее работать. Итак, если у вас есть исходный код, определенно не избавляйтесь от него. Сохраните мини-код отдельно.

Я помню, что читал где-то, что можно включить сжатие всех ресурсов (например, изображений, CSS, JavaScript и т.д.), установив некоторые опции в Apache Web Server.

Да, это называется сжатием gzip. Это не уникально для Apache, но вам нужно настроить сервер для его включения.

Есть ли разница в яваскрипта сжатия сделана на Apache уровня, и тот сделал с помощью таких инструментов, как YUI Compressor?

Да. Компрессор YUI - это мини-блок - выход действителен javascript. Сжатие на стороне сервера более похоже на zip-файл - браузер должен декодировать его до его использования. Использование двух вместе даст наименьший размер файла.

+0

вы ответили на все мои вопросы и, следовательно, приняли это как ответ. Спасибо! – peakit

3

Обычно разработчики разрабатывают против несжатого файла сценария, сжимают перед развертыванием.

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

И да, Apache и даже IIS могут автоматически сжимать скрипты и изображения для вас.

+0

Мне нравится, как современные [Rails] (http://rubyonrails.org) обрабатывают активы. Он gzips и timestamps их. Больше не горит процессор на производстве. Также он удобен для кеширования. –

+0

В другой жизни я думаю, что я был разработчиком RoR ... в этой жизни это MVC, который в основном Rails с C# ... может быть хуже ...:) –

+0

@Adam, checkout один из ответов от «OriginalSyn», похоже, что Chrome может помочь вам частично отделить файлы javascript – peakit

8

Вы не должны отлаживать сокращенный код. В идеале процесс разработки таков:

  1. Вы создаете и отлаживаете сайт локально. У вас есть полные версии javascripts, stylesheets и всего.

  2. Вы устанавливаете версию на производственную машину. Вы уменьшаете и gzip копию своих активов и нажимаете это на сервер. Ваша локальная копия разработки остается нетронутой.

  3. Если есть ошибка в производстве, вы изменяете локальную версию, уменьшаете, сжимаете, загружаете.

Повторять до ПРИБЫЛИ

+0

+1 для PROFIT :) –

+0

@Sergei Tulentsev, я дал более подробную информацию об отладке, о которой я говорил в разделе EDIT моего вопроса выше. Не могли бы вы взглянуть на это и дать мне какие-либо материалы о том, как это сделать? Благодарю. – peakit

+0

Я бы сделал одно из следующих: 1) где-то реплицировать производственную среду и попытаться воспроизвести проблему с полными javascripts. 2) скопируйте полные javascripts в производство и сделайте их, когда ** вы ** заходите в систему (и продолжайте использовать сокращенную версию для всех остальных) –

1
  1. Я предпочитаю работать с местным unminified копию JS-файла, и когда я развернуть сайт, я Минимизировать все JS-файлов в один. Таким образом, легко отлаживать и улучшать код. Тем не менее, есть инструменты для возврата к минимизации. Посмотрите на это SO post на повторное сокращение JavaScript.
  2. Посмотрите на сжатие GZIP - This blog описывают, как включить GZIP в Apache и как проверить, что ваш сервер на самом деле сжимает файлы.
1

это можно сделать по требованию де-минификация на стороне клиента

Некоторые браузеры имеют «довольно код» вид, который автоматически форматирует исходный код. См. Вкладку CSS Firebug.

Есть ли какая-либо разница в сжатии javascript, выполненном на уровне Apache, и одна из них выполняется с использованием таких инструментов, как YUI Compressor?

Компрессор YIU на самом деле является минитрактором. Сжатие Apache подобно ZIP-заполнению файла до его отправки клиенту, поэтому фактический отправленный файл меньше, чем файл на диске. Это две разные технологии, которые не зависят друг от друга.

4

Chrome Dev Tools может де-запутать (и де-Минимизировать) Javascript код, если вы хотите отлаживать код производства (полезно при попытке воспроизвести ошибку на живой среде вы не можете видеть в Dev)

enter image description here enter image description here

+0

+1 спасибо за то, что поделились этим :) – peakit

Смежные вопросы