В jQuery начиная с версии 1.8 можно исключить некоторые модули

    В частности модули ajax, css, dimensions, effects, offset. Новость уже появилась давно. Коммит с анонсом данной возможности на github-е появился еще 7 июня.
    Не так часто, но встречал спор насчет размера и лишнего функционала, да и я сам был бы не проч исключить модули для некоторых проектов. Надеюсь возможность исключить модули появятся и на популярных CDN. Как это можно собрать — под катом или на github-е.

    Установка


    git clone git://github.com/jquery/jquery.git
    cd jquery && npm install
    

    Grunt проверяем так:
    node_modules/grunt/bin/grunt -version
    

    а не как на официальном манулае:
    grunt -version
    

    Build


    Для удобства добавлен специальный alias custom, хотя можно воспользоваться и build:
    node_modules/grunt/bin/grunt custom:<modules>
    

    node_modules/grunt/bin/grunt build:*:*:<modules>
    

    Исключаем модуль ajax:
    node_modules/grunt/bin/grunt custom:-ajax
    

    Исключаем модуль css:
    node_modules/grunt/bin/grunt custom:-css
    

    Исключить все допустимые модули:
    node_modules/grunt/bin/grunt custom:-ajax,-css,-dimensions,-effects,-offset
    

    Правда не удалось собрать jquery без каких-либо доступных для исключения модулей для сравнения размеров файлов. Через custom не собирает вообще, а через build пишет «Excluding», но собирает полностью со всеми модулями. А может и мне не удалось.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 38

      +32
      Текст новости вкратце: «Из jQuery можно исключить модули, но это не работает»
        +2
        Временно не работает. Это же не релиз. Или мне не удалось. Просто сам факт, — наконец-то, можно собирать без ненужных модулей.
        +10
        Grunt проверяем так:
        node_modules/grunt/bin/grunt -version
        а не как на официальном манулае:
        node_modules/grunt/bin/grunt -version

        Ээ… что-то не увидел разницу =)))
          0
          Ага. Я еще после публикации заметил. Только уже 3ий раз пробую сохранить — «Неизвестный тип публикации»
          Grunt проверяем так:
          node_modules/grunt/bin/grunt -version
          

          а не как на официальном манулае:
          grunt -version
          
          • UFO just landed and posted this here
              0
              Нет. Я до сих пор не могу обновить топик. У хабра какие-то проблемы с публикацией. Я уже писал в support.
            +11
            Секунд 15 мучил глаза и мозг, сделал так:

            >>> 'node_modules/grunt/bin/grunt -version' == 'node_modules/grunt/bin/grunt -version'
            True
            0
            Отлично!
            В текущем проекте весь jQuery-комбайн нужен не был, поковырялся, но потом плюнул и поставил как есть.
            Теперь — просто сказка будет!
            • UFO just landed and posted this here
                0
                По заветам батьки Оккама, чем не пользуюсь — то не нужно.
                • UFO just landed and posted this here
                  +3
                  32 KB — это сжатая упакованная версия, которая так просто не используется, а сначала распаковывается движком, а потом лишь он ее использует. По затратности (как по мне) я согласен 200к качать, но сильно ускорить конечную подгрузку скрипта. Поэтому выкидывание ненужного из комплекта — это не экономия пары кило на трафике, а комплексный правильный подход.
                    0
                    Она сжатая, но не упакованная, оттуда выкинуты ненужные переводы строк и комменты, и произведены замены длинных названий на короткие. Браузеру с таким кодом, наоборот, лучше работать.
                      +3
                      jquery.com:
                      PRODUCTION (32KB, Minified and Gzipped)
                        –3
                        Сначала бы потрудились заглянуть в этот файл и в какой-нибудь зазипованный файл :)

                        Там обычный JS
                          0
                          А вы потрудитесь скопировать его содержимое и вставить в файл. И получите 96 кб обычного JS. А умный браузер просто вам его отображает, как и gzip-html файл.
                            0
                            nginx и 200кб скрипт отдаст зазипованным, если правильно настроен, так что это не критерий

                            Да, 32к — это рекламный ход, и это действительно уже сжатый объем. Но это к делу не относится, я отвечал ранее на конкретный коммент, что минифицированный скрипт лучше оригинального
                              0
                              Я не спорю с тем, много ли это или мало, я спорю с гарантировано неверными утверждениями:

                              Она сжатая, но не упакованная

                              Там обычный JS
                                –8
                                То есть, по теме нечего сказать? :)

                                Хорошо, прекращаем диалог.
                      0
                      В случае необходимости прироста скорости загрузки страницы даже таким путем не проще использовать подгрузку через гугл? Тогда в большинстве случаев клиенту ее качать вообще не потребуется.
                      +1
                      Каждый килобайт на стороне пользователя того стоит, потому что заведомо неизвестны параметры машины, на которой код будет исполнятся.

                      По части модульности jQuery слишком запоздал. На его волне выросло уже немало фреймворков. Тот же Zepto.js может заменить jQuery на большинстве сайтов да еще и (sic!) без переписывания существующего кода.
                    +6
                    Отлично! Ждем, когда сделают сайт с компайлом, как у jQueryUI
                      0
                      Интересно, можно ли будет выбирать нужные модули налету с CDN google и подобных.
                        0
                        Скорее всего, да. Даже с учетом всех возможных комбинаций общий размер файлов получится не больше нескольких мегабайт.
                          0
                          Только вот вероятность того, что у пользователя уже будет в кэше «именно этот» файл сильно уменьшается.
                          0
                          Вот так возьмешь проект, вроде jQuery подключен, а нужного модуля для расширения функционала нет.
                          Ковыряйся с этим блин.
                            0
                            предпочитаю подход zepto.js, который совместим с jquery, при этом из него выкинуты костыли для старых ие. просто подключаешь его вместо jquery и все работает.

                            продакшн версия – 8.4k gzipped
                              0
                              Если бы вы читали блог разработчиков jQuery, вы бы знали, что на поддержку «старых» браузеров в библиотеке задействовано совсем немного кода, и удалив его, никакого профита, кроме уменьшенного на несколько строк размера, мы не получим. Зато оставив, команда jQuery покрывает бОльший круг пользователей.
                                +1
                                Ага. Как минимум движок селекторов — вообще фигня.
                                  0
                                  Он не фигня, но просто так его выкинуть нельзя.
                                    0
                                    Если человек использует zepto — ему IE8- не нужен.
                                    А вот для поддержки IE6-IE8 ооочень много костылей.
                                    Согласен, что если поддерживать IE8, то отказываться от поддержки IE6-IE7 смысла нету
                                  0
                                  А можно линк на пару статьей почитать?
                                    +1
                                    Вот старая запись, и там все четко сказано.
                                    0
                                    вместо того чтобы слушать разработчиков, лучше заглянуть в код (там никакого rocket science нет). избавившись от костылей для ие, кода становится намного меньше и исполняется он намного быстрее.
                                      0
                                      Для «ИЕ», какого, простите? Восьмой саппортить придется в любом случае — на XP кроме него, никакой больше не встает. А если саппортим 8-ку, то саппортить и 6-7 вообще не проблема — там почти все одинаково.

                                      Или вы предлагаете вообще вырезать ИЕ из саппорт-матрицы?
                                        0
                                        Для мобилных — не помешало бы
                                          0
                                          Для мобильных же есть jQuery Mobile?
                                            0
                                            Это надстройка над обычным

                                Only users with full accounts can post comments. Log in, please.