JS - один огромный файл или много небольших файлов? - где рисовать линию?

Есть ли хорошее правило о том, насколько большой (по размеру) JS файл должен быть - что, если он станет больше, чем это, хорошая идея разбить его на более мелкие файлы?

Ответы

Ответ 1

Тот же размер, что и любые другие языки (не более нескольких сотен строк), а также concat и minify во время выполнения (с использованием компилятора Closure или libs libs или whatnot) - это то, что мы делаем.

Ответ 2

Больше файлов = Больше запросов HTTP = Более медленный веб-сайт

Ответ 3

Меньше файлов = менее чистый код = более медленное кодирование. Стоимость больше, чем пропускная способность.

Изменить: если вы действительно этого хотите, у вас может быть инструмент для их слияния после вашего кода.

Ответ 4

Разрабатывайте столько файлов, сколько хотите. Организуйте свой код, чтобы поддерживать управляемость.

Затем, когда вы развертываете, отправляйте мини-версию/комбинированную версию кода с помощью инструмента, такого как Google Closure

Это то, что делает jQuery. Они отправляют один файл, но фактический исходный код более организованный.

Ответ 5

Все мои файлы JS - по одной для каждой функции плюс библиотеки - находятся в одной папке за пределами общедоступного каталога, а приоритетные - с одним или двумя символами подчеркивания. На моей индексной странице вызывается PHP script со статического сервера. Он проверяет, существует или нет сжатый JS файл. Если это не так, scandir выполняется в каталоге JS, и каждый файл включается в буфер, затем сжимается и помещается в один файл. И он выводит содержимое этого файла.

Если я изменяю/добавляю/удалю файл js, все, что мне нужно сделать, это удалить сжатый файл, и он будет воссоздан при следующем загрузке.

Преимущество в том, что у вас есть один и оптимизированный HTTP-запрос для javascript, и вы все равно можете разделить свои сценарии на столько файлов, сколько хотите. Процесс создания файла, который может быть тяжелым, не используется каждый раз, когда загружается страница, но только тогда, когда файл отсутствует. Этот метод хорош, когда я использую его с приложением, которое никогда не перезагружается, или не нужно загружать определенные функции для определенных страниц, хотя было бы много обходных решений.