Что-то, что вы определенно НЕ должны делать, - это объединить весь ваш JavaScript в один файл.Если вы когда-нибудь внесете изменения в свою кодовую базу, этот файл будет воссоздан ... и распространен среди всех посетителей.Затраты HTTP довольно незначительны, поэтому если вы не загружаете сотни и тысячи уникальных файлов, загрузка 20 разных файлов по сравнению с загрузкой 1 большого не будет иметь большого значения, за исключением пользователей с исключительно медленными соединениями (которые будут ждать большихфайл в любом случае, поэтому они не заметят лишнюю секунду или две из-за накладных расходов HTTP).
Предложение ToonMariner использовать размещенный код (в частности, из репозитория Google Code) является хорошим - это избавляет вас от необходимостиразмещать файл, он позволяет пользователям, которые столкнулись с этим файлом, воспользоваться преимуществами кэширования (улучшая кажущуюся скорость загрузки вашего сайта), и он не будет включен в составленный файл, если вы внесете изменение.Даже если вы решите сохранить все свое приложение в одном большом файле, вы должны использовать его, поскольку вы можете избежать упаковки jQuery, и это сэкономит 50 + КБ.
Кроме того, ваша забота о интерпретации bellsAndWhistlesPlugin () правильно - функция this
в функции bellsAndWhistlesPlugin - это просто пустой список (хотя я надеюсь, что плагин выполняет вызов $ (this) .each для итерации по элементам и возвращает рано, поскольку элементов нет ... в противном случаеВы можете вернуться к своим плагинам!).Вы можете устранить эту проблему, удалив специфичный для страницы код из вашего полного файла application.js и поместив его во встроенный элемент на самой странице, где он все равно принадлежит, или переписав плагин, чтобы он возвращался рано, если естьнет соответствующих элементов.
Просто убедитесь, что вы включили кэширование для ресурсов, загруженных из каталога / js, и у вас не возникнет проблем с перезагрузкой библиотек - только те, которые изменились.Вы можете использовать заголовок Expires или последний измененный заголовок;Истечение срока действия не обязательно приведет к принудительному обновлению, если пользователь не перезагружается или срок действия кэша не истек, а Last -ified вызывает HTTP-издержки для каждого файла, что проблематично для большого числа файлов.Вам придется оценить компромиссы для вашего приложения.
Если вы действительно, действительно, серьезно заинтересованы в максимальной эффективности, вы можете переписать свое приложение, используя GWT .Это технически гарантирует максимальную переносимость между браузерами, максимальную эффективность кода, устраняет зависимость от библиотек jQuery, будет выполняться быстрее и создает файлы меньшего размера.Я мог бы добавить, что все в одном файле, но компромиссы для получения статического компилятора для максимальной эффективности JavaScript стоят того ... если вы готовы переписать все это в GWT.
Вопрос, который вы задаетедолжен спросить себя: кто мой средний пользователь?Какой тип связи у него / нее?Нужно ли запускать мое приложение на мобильных устройствах?Если ваш обычный пользователь имеет быстрое соединение, не беспокойтесь об этом - они загрузят вашу страницу достаточно быстро, в зависимости от того, какой путь вы выберете.Если вам нужно работать на мобильных устройствах или ваша целевая аудитория имеет низкую скорость соединения, рассмотрите возможность кэширования больших библиотек, которые меняются очень редко, и использования внешних репозитариев, где это возможно (например, jQuery), а затем упакуйте оставшееся приложение в один большой файл.,Издержки HTTP для мобильных устройств и медленного интернета достаточно значительны, чтобы оправдать это.