Посмотрите, как библиотеки, как Dojo и ExtJS управлять этим для идей. Они используют такие функции, как require(), чтобы извлекать динамически зависящие от них сценарии и обеспечивать, чтобы эти обычные библиотеки не загружались дважды. Они определяют события для обработки зависимостей нагрузки, так что, например, ваш большой список операторов .ready() может быть реорганизован в некоторых местах, чтобы вместо этого быть одной важной инициализацией библиотеки, а затем отключить одно или несколько событий, чтобы указать, что некоторые вещи готовы, что другие библиотеки используют их для инициализации.
Одна вещь, которую мне нравится делать, когда несколько кодеров кодируются с одной и той же кодовой базой, заключается в использовании HTML/DOM в качестве взаимного договора и привязки кода к ней с помощью селекторов, а не разрешению встроенных событий.
Например, если вы пишете элемент управления календарем, который имеет onclick на теге img, который должен показывать календарь, вы затрудняетесь с тем, чтобы еще две библиотеки вошли и отключали «календарь» контроль собирается всплывающее событие. С другой стороны, если библиотека ищет элементы с именем класса CSSName «calendarPick» и прикрепляет к ним событие, то вы оставляете открытые другие библиотеки, чтобы делать то, что они будут, с тем же DOM, с которым вы делитесь, с небольшой или никакой координацией между кодеры (код записи, требующий координации кодера, как правило, замедляет кодирование и увеличивает вероятность того, что что-то сломается).
Если эта библиотека календарей предлагает некоторые события, чтобы от нее от нее отказаться, другие кодеры выполняют свою работу, поскольку, если событие уже существует, они, скорее всего, напишут это чисто; если это не так, они могут взломать его и сделать базу кода менее гибкой в этом процессе.
Если вы предлагаете методы singleton, например Calendar.getCalendars(), вы также облегчите совместную работу, потому что это мешает людям писать собственную версию этих методов, блокируя реализацию до определенного набора имена классов, порядок DOM или даже более хрупкие обстоятельства, чтобы все версии этого продолжали работать.
См. Также: http://stackoverflow.com/questions/15390/best-practices-for-managing-and-deploying-large-javascript-apps –