Организация и дизайн файлов Javascript

Действительно, попав в веб-разработку и, в частности, JS, мне было интересно узнать, какие были лучшие практики в отношении организации JS файлов и делегирования ответственности. Я спрашиваю об этом, потому что для меня было бы целесообразно иметь такую ​​структуру:

  • ГЛАВНАЯ СТРАНИЦА (PHP) (включает ссылку на центральный файл JS)
  • ГЛАВНЫЙ Javascript File (Включает ссылку на один файл, содержащий только коды ошибок в пространстве имен или в классе B)

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

Ответ 1

Лучший способ обработки нескольких файлов JavaScript - создавать их как модули. Один основной файл JavaScript должен действовать как своего рода загрузчик, который запускает вещи, настраивая ваше "пространство имен" (цитируется, поскольку JavaScript не имеет классов). Пример:

var myNamespace = {};

В каждом из ваших модулей вы расширяете "пространство имен". Это имеет два преимущества:

  • Минимизирует глобальные переменные. В этом случае у вас будет один глобальный.
  • Легко смешивать и сопоставлять (и повторно использовать) модули, если они разработаны правильно.

Также см. это для деталей реализации: fooobar.com/questions/75117/...

Ответ 2

Я бы разбил классы на модульные JS файлы, соответствующие вашему домену. Используйте компрессор YUI или другие инструменты для сжатия JS файлов и их минимизации.

Ответ 3

Один большой JS файл на самом деле не такой "плохой" по сравнению с использованием нескольких JS файлов.

Вы можете сжать его на сервере, если вы беспокоитесь о ширине полосы, посмотрите gzip или выкачайте.