Несколько функций запуска в объединенном файле JavaScript

0

В моем интерфейсе приложений в настоящее время используется один объединенный/миниатюрный файл javascript по соображениям производительности. Это удобная настройка, но я столкнулся с проблемой. Отдельные страницы имеют свой собственный код запуска в $ (function()), но поскольку на каждом сайте ссылка на javascript ссылается на каждую страницу, все функции запуска выполняются на каждой странице, что совершенно непреднамеренно.

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

$(function() {
  if($('title').text()=='some title') {
  // do something
  }
}

Вышеупомянутая функция будет работать только в том случае, если заголовок страницы является "некоторым заголовком", что предотвращает его запуск на других страницах (при условии, что у них разные названия, конечно). Эта стратегия, вероятно, будет работать на весь сайт, но она кажется взломанной и небезопасной. У кого-то есть лучшее решение?

  • 0
    Объедините только то, что является общим для всех страниц. :-) В противном случае это не экономия, а скорее трата.
Теги:
minify
frontend
document-ready

1 ответ

0

Если у вас есть 1000 страниц, то эти 999 функций вы загружаете, даже если они вам не нужны. Вытяните отдельные вещи в свои собственные файлы js. Затем для каждой страницы вы будете вытаскивать только два js файла (основной и специфичный для страницы). Затем я сделаю еще один шаг и реализую кэширование на файлах imgs и js, чтобы они не были вытащены или даже не проверены, были ли они изменены, таким образом, сохраняя много сетевых отключений. Но затем, когда вы вытесняете изменения, вы должны заставить пользователей перезагружать файлы, сделайте это, изменив структуру каталогов с помощью каждого "push" или build ".

Пример: ваш сайт /javascript/jan01build/allYourJsFiles

Затем выполните кэширование (скажем, в течение года) в папке javascript верхнего уровня, например... qaru.site/questions/539628/...

Теперь, если вы просматриваете сетевой трафик с помощью F12 в Chrome, вы должны видеть "статус 200" и "размер - от кеша" для файлов js. Это означает, что сетевое путешествие даже не было сделано, чтобы проверить, было ли оно изменено (статус 304).

Затем, когда вы меняете свой код и выполняете другой "push" или "build", вам придется заставить пользователей получать новые файлы, сделайте это, просто изменив каталог на...

Пример: ваш сайт /javascript/feb01build/allYourJsFiles

(повторите все это с помощью изображений)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню