Метка: javascript

Сравнение 2х основных утилит для сжатия статических файлов

Решил сравнить способности по сжатию javascript у 2х основных утилит closure compiler от google и yui compressor от yahoo.

Будем сравнивать с несжатой и сжатой версией jquery:

java -jar compiler.jar --js jquery-1.11.1.js --js_output_file=jquery-1.11.1.cc.js
java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js jquery-1.11.1.js --js_output_file=jquery-1.11.1.cca.js
java -jar yuicompressor.jar jquery-1.11.1.js -o jquery-1.11.1.yui.js
jquery-1.11.1.js282766
jquery-1.11.1.min.js95786
jquery-1.11.1.cca.js87933
jquery-1.11.1.cc.js96284
jquery-1.11.1.yui.js107452

Лучше всего сжатие у closure compiler с опцией ADVANCED_OPTIMIZATIONS. На следующем месте идет сжатый jquery от вендоров, так что если под рукой нет компрессора с java, лучше использовать его.

Как ни странно, мой любимый yui compressor на последнем месте. Но, в его защиту можно сказать, что он оставляет все комментарии с копирайтами, удалив которые, наверняка, можно было бы сэкономить еще. А так же, closure compiler не умеет сжимать css а размер его jar-файла 6 856 128 байт, против 891 148 yui, что в 7,69 раз больше.

Так что yui compressor по прежнему остается не заменимой утилитой, которую можно таскать и вместе с проектом в git, а так же сжимать как стили, так и скрипты, пусть и не с максимальной экономией.

TL;DR


Создано: 02.06.2014 14:59

Отслеживаем конверсию без перезагрузки страницы

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

Однако, в наш век Rich Internet Application, такой метод общения с пользователем кажется способом забиванием гвоздей камнями. Гораздо приятнее, когда форма проверяется и отправляются данные из нее прямо на той же странице, где находится пользователь. Тут же выводится и сообщение об успешной отправке. Например, как на этом лендинге по созданию целевых страниц.

Как же тогда отметить в Метрике достижение цели? Оказывается, разработчики метрики уже подумали об этом и предоставляют нам способ обозначить достижение цели через клиентский код.

А также показывают пример кода, который позволяет достигать целей конверсии без перезагрузки страницы: Можно ли задать в качестве цели нажатие посетителем на какую-либо ссылку или кнопку?

А чтобы сделать наше приложение максимально гибким, я разработал следующий код:

(function($, w, d){
    $(w).on('load', function(){
        $(d).on('yandex.reachGoal', function (e, params) {
            var target = params.target;
            params = params.params || null;
            target && w.yaCounterXXXXXX && w.yaCounterXXXXXX.reachGoal(target, params);
        });
    });
})(jQuery, window, document);

Коду для работы требуется установленный на странице код Я.Метрики и jQuery. Здесь мы подвешиваем на документ обработчики событий, которые будут отправлять данные в Яндекс. Это нужно прежде всего для того, чтобы не передавать идентификатор счетчика в метрике по всему коду. Чтобы воспользоваться этим кодом, достаточно в коде обработки формы при успешной отправке возбуждать соответствующее событие.

$(document).trigger('yandex.reachGoal', {target:'REQUEST_SENT'});

Не забудьте добавить эту цель в интерфейсе метрики. Удачи.

TL;DR


Создано: 11.11.2013 21:26

Fork me on GitHub