Как стать автором
Обновить

Комментарии 9

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

Как мне кажется (поправьте, если не прав), такого рода функция при загрузке одного файла, должна создавать серию загрузок всех зависимых файлов (читай — обращений к серверу за нужным файлом). А так в результате получается один файл, всё чисто и красиво. Кроме того, обычно разбиение хочется сделать помельче.

Привлекать только для этого дела сервер — занятие странное, даже с кешем.

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

Так же в ней можно следить за тем, чтобы не инклудилось несколько раз.

Да, описанный в статье инструмент не будет инклудить по нескольку раз.
Как мне кажется (поправьте, если не прав), такого рода функция при загрузке одного файла, должна создавать серию загрузок всех зависимых файлов

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

обращений к серверу за нужным файлом

Даже если так — это обращение за статикой, что обычно быстро и прокешировано браузером.

Очень хочет знать почему! Мне тоже казалось, что это так

Ну во-первых не у всех есть РНР на сервере. Во-вторых это запутывает мозг нехило, плюс каждый раз следить за инвалидацией кеша, в-третьих дебажить такое будет сложнее, отладка большого JS и так довольно нетривиальная вещь, а тут еще следить за тем, что там сервер наинклудил.

Да, описанный в статье инструмент не будет инклудить по нескольку раз.

Это, безусловно, вам плюс.

P.S.: Ссылку «ответ» под комментарием больше не пропускайте, так удобнее :)
Ну во-первых не у всех есть РНР на сервере.

Разумно. Может быть сделать аналогичный инструмент для остальных ServerSide платформ!?

Во-вторых это запутывает мозг нехило, плюс каждый раз следить за инвалидацией кеша,

На самом деле кэширование и прочие механизмы уже реализованы и работают. Так вот, там пасётся и корректная инвалидация кэша (т.е. при модификации одного из зависимых js-файлов итоговый файл пересобирается).

в-третьих дебажить такое будет сложнее, отладка большого JS и так довольно нетривиальная вещь, а тут еще следить за тем, что там сервер наинклудил.

А тут на помощь нам приходит альтернативный вариант подключения файлов по старинке. Это вариант был предусмотрен как раз для использования в режиме отладки. Кроме того такой подход, как мне кажется, поощряет более мелкое разбиение на файлы. Когда я использовал старый метод ленивого подключения JavaScript'а, я постоянно испытывал некий дискомфорт при создании новых файлов (мол, что лишний раз на сервер ходить).

Также меня несколько напрягает следующая ситуация. Допустим я закончил проект и теперь должен задеплоить его. Я должен написать скрипт, который пройдется по моим js файлам и заминимизирует их. А если теперь я вдруг что-то поменял и хочу внести эту правку в боевую версию. Нужно пойти и запустить bat файл минимизатора (при этом желательно не запускать минимизатор, если нет изменённых файлов), а только потом, очевидно, что-нибудь типа rsync. Как-то много действий вместо простого копирования файла?

Хотя, за ответ спасибо. Мне кажется становиться понятно, что особых-то плюсов нет. То есть такой вариант ничем не лучше, а скорее всего даже хуже.
> Как-то много действий вместо простого копирования файла?

Сборка/минимизация статики должна запускаться из скрипта деплоя, вот и все:)
Спасибо, я посмотрел. Отсюда вытекает, что нужно сделать следующее:
1. Добавить режим командной строки.
2. Обеспечить один интерфейс и сделать возможность использования этой библиотеки через js.php, представленный в этой статье.
На 1-й странице вам нужны js-скрипты A, B и C, вы компонуете их в файл ABC.
На 2-й странице нужны уже A, B и D и вы выдаёте ABD, в котором опять перегоняете браузеру содержимое A и B, которое он мог взять из кэша, будь это разные файлы.
Так что ваш дискомфорт от лишнего хождения на сервер может быть не всегда оправдан.
Точно! Вот и самый главный аргумент против. Спасибо за разъяснения.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации