Организация и дизайн файлов 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 или выкачайте.