management document.ready событие (я) на крупномасштабном веб-сайте

ПРИМЕЧАНИЕ: я создал плагин jQuery, который является моей попыткой решения этой проблемы. . Я уверен, что его можно улучшить, и я, вероятно, упустил из виду множество вариантов использования, поэтому, если кто-то хочет оставить отзыв, не стесняйтесь :-) https://github.com/WickyNilliams/ReadyBinder

Я не У меня нет проблемы как таковой, но я подумал, что это будет интересный момент для обсуждения, и я надеюсь, что у людей есть несколько интересных идей по этому поводу.

В основном я работаю над крупным веб-сайтом, и все чаще мы пишем все больше и больше JavaScript. Это нормально, мне нравится уникальный подход JS, и я нахожу причудливые черты некоторых мрачных анналов языка милыми ;-) Однако одна вещь, которая меня всегда беспокоила, - это то, как управлять событиями готовности документа, когда они становятся все более крупными. с течением времени (и, как результат, менее сфокусированным / специфичным для обслуживаемой страницы)

Проблема в том, что у нас есть один JS-файл (объединенный и уменьшенный, хотя для моих вопросов это несущественно). Большая часть JS написана с использованием шаблона раскрывающего модуля, и мы предпочитаем jQuery. Таким образом, вся наша функция JS логически сгруппирована в методы, пространство имен, а затем прямо в нижней части файла сценария у нас есть это

$(function(){
    //lots of code here, usually calling encapsulated methods 
    //on our namespaced revealing module
});

Проблема в том, что не весь код в этом обработчике готового документа относится к каждой странице. Например, на одной странице только 10% может быть актуальным, на другой, возможно, 80% может быть актуальным. Мне это кажется невероятно неправильным, я чувствую, что должен выполнять только тот код, который мне нужен для каждой страницы, в основном для эффективности, но также для удобства обслуживания.

Я искал в Google подходы к решению этой проблемы, но ничего не нашел, возможно, я просто ищу не то!

В общем, у меня такие вопросы:

  • Кто-нибудь когда-нибудь задумывался об этой проблеме?
  • Это действительно проблема, по мнению других людей?
  • У вас есть большой, всеобъемлющий обработчик готовых документов в ваш код или он больше ориентирован на тип обслуживаемой страницы?
  • Если последнее, как вы справляетесь с этим? Множественные обработчики, которые переключаются на JS или динамически выводят обработчик готового документа на стороне сервера?

Ждите мнений людей по этому поводу.

Ура

31
задан WickyNilliams 5 October 2011 в 10:03
поделиться