Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.02.2015, 20:29
Интересующийся
Отправить личное сообщение для egreek Посмотреть профиль Найти все сообщения от egreek
 
Регистрация: 22.08.2011
Сообщений: 18

Объединение функционала в один .js-файл
Здравствуйте,
При подключении к html-документу скриптов хочется объединить функционал для работы разных страниц в один документ, но возникает куча ошибок на страницах, для которых не подключены дополнительные библиотеки.
Например, есть страницы index.html и login.html, и хочется сделать для них один JS-файл. На странице login.html подключен jQuery Validate и все ок, но на index.html нет форм и плагин валидации там не нужен.
В следствие этого возникает проблема на следующей строке js-файла:
$("[data-mask]").inputmask();

На текущий момент решаю эту проблему таким образом:
if ($('form').is('#login-form')) {
    $("[data-mask]").inputmask();
}

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

Как лучше оптимизировать эту ситуацию? Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 01.03.2015, 00:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Либо вы подключаете один js-файл, отлаженный, упакованный, либо, если жаба давит по поводу N-байт кода, то сервер должен знать к какой странице эти N-байт подключить - подключайте.

Ваш один js-файл будет кеширован, как и jQuery, подключаемый например с сервера Гугл, с большой долей вероятности уже есть в кеше ваших пользователей.
Ответить с цитированием
  #3 (permalink)  
Старый 01.03.2015, 01:06
Интересующийся
Отправить личное сообщение для egreek Посмотреть профиль Найти все сообщения от egreek
 
Регистрация: 22.08.2011
Сообщений: 18

Сообщение от laimas Посмотреть сообщение
Либо вы подключаете один js-файл, отлаженный, упакованный, либо, если жаба давит по поводу N-байт кода, то сервер должен знать к какой странице эти N-байт подключить - подключайте.

Ваш один js-файл будет кеширован, как и jQuery, подключаемый например с сервера Гугл, с большой долей вероятности уже есть в кеше ваших пользователей.
В целом понятно. Можно, конечно, тупо и ко всем страницам подключить по 10 модулей, половина из которых не будет использоваться на конкретной странице. И тут уже не так важна упакованность, как количество обращений. А много обращений вроде как - не есть хорошо.

Ну а как вариант с выключением ненужных кусков кода через .is() ?
Ответить с цитированием
  #4 (permalink)  
Старый 01.03.2015, 02:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Ну а как вариант с выключением ненужных кусков кода через .is() ?

Вы думаете это эффективнее по сравнению отдавать один упакованный файл и более не заботиться об этом?
Ответить с цитированием
  #5 (permalink)  
Старый 01.03.2015, 11:00
Интересующийся
Отправить личное сообщение для egreek Посмотреть профиль Найти все сообщения от egreek
 
Регистрация: 22.08.2011
Сообщений: 18

Сообщение от laimas Посмотреть сообщение
Ну а как вариант с выключением ненужных кусков кода через .is() ?

Вы думаете это эффективнее по сравнению отдавать один упакованный файл и более не заботиться об этом?
Нет, конечно. Я пока остановился на варианте с разбитием все в разные файлы и подключением группой через Minify. Просто хотел узнать об альтернативных вариантах.
Ответить с цитированием
  #6 (permalink)  
Старый 01.03.2015, 21:48
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

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

Разумеется, все это имеет какой-то смысл только если проведена первостепенная оптимизация - gzip, перенос скриптов в конец страницы и так далее.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 03.03.2015, 11:03
Интересующийся
Отправить личное сообщение для egreek Посмотреть профиль Найти все сообщения от egreek
 
Регистрация: 22.08.2011
Сообщений: 18

Сообщение от danik.js Посмотреть сообщение
Простой вариант - сжать все в один файл. Количество обращений сведется к одному. Последующие переходы по страницам ускорятся. Однако первоначальный размер файла будет возможно больше чем требуется.
Тогда более сложный вариант - один общий файл + допфайлы где нужны.
Тут возможно стоит выявить наиболее посещаемую страницу и оптимизировать первоначальный файл под нее. Если это главная сайта, то будет полезно выделить, скажем, тяжелые скрипты галереи в отдельный файл и грузить его только на странице галереи.

Разумеется, все это имеет какой-то смысл только если проведена первостепенная оптимизация - gzip, перенос скриптов в конец страницы и так далее.
Спасибо за ответ. Все понятно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод данных из БД в .js файл Loromir jQuery 5 18.12.2014 17:38
Люди, помогите дилетанту! Как объеденить скрипты в один файл? patroklit Элементы интерфейса 3 04.12.2013 13:55
Объединить JS в один файл Alfer Общие вопросы Javascript 0 14.07.2013 13:43
Подключенный .js файл не работает lamer Элементы интерфейса 3 18.03.2012 14:10
не прикрепляется файл .js 4aineg Элементы интерфейса 10 22.03.2010 20:29