Комментарии 9
Может я не до конца понял, но не проще ли написать самому на JS функцию, которая инклудит по-старинке (создавая новый узел script в head). Так же в ней можно следить за тем, чтобы не инклудилось несколько раз. Привлекать только для этого дела сервер — занятие странное, даже с кешем.
+1
Может я не до конца понял, но не проще ли написать самому на JS функцию, которая инклудит по-старинке (создавая новый узел script в head).
Как мне кажется (поправьте, если не прав), такого рода функция при загрузке одного файла, должна создавать серию загрузок всех зависимых файлов (читай — обращений к серверу за нужным файлом). А так в результате получается один файл, всё чисто и красиво. Кроме того, обычно разбиение хочется сделать помельче.
Привлекать только для этого дела сервер — занятие странное, даже с кешем.
Очень хочет знать почему! Мне тоже казалось, что это так, особенно учитывая тот факт, что не нашлось аналогичных инструментов в интернете. Однако я не могу найти ни одного разумного довода против такого подхода.
Так же в ней можно следить за тем, чтобы не инклудилось несколько раз.
Да, описанный в статье инструмент не будет инклудить по нескольку раз.
0
Как мне кажется (поправьте, если не прав), такого рода функция при загрузке одного файла, должна создавать серию загрузок всех зависимых файлов
Нет, я реализовывал по-другому. Функция просто знала, что этот файл уже подключен и пропускала его. Может быть ваш инструмент умнее, но мне всегда хватало.
обращений к серверу за нужным файлом
Даже если так — это обращение за статикой, что обычно быстро и прокешировано браузером.
Очень хочет знать почему! Мне тоже казалось, что это так
Ну во-первых не у всех есть РНР на сервере. Во-вторых это запутывает мозг нехило, плюс каждый раз следить за инвалидацией кеша, в-третьих дебажить такое будет сложнее, отладка большого JS и так довольно нетривиальная вещь, а тут еще следить за тем, что там сервер наинклудил.
Да, описанный в статье инструмент не будет инклудить по нескольку раз.
Это, безусловно, вам плюс.
P.S.: Ссылку «ответ» под комментарием больше не пропускайте, так удобнее :)
0
Ну во-первых не у всех есть РНР на сервере.
Разумно. Может быть сделать аналогичный инструмент для остальных ServerSide платформ!?
Во-вторых это запутывает мозг нехило, плюс каждый раз следить за инвалидацией кеша,
На самом деле кэширование и прочие механизмы уже реализованы и работают. Так вот, там пасётся и корректная инвалидация кэша (т.е. при модификации одного из зависимых js-файлов итоговый файл пересобирается).
в-третьих дебажить такое будет сложнее, отладка большого JS и так довольно нетривиальная вещь, а тут еще следить за тем, что там сервер наинклудил.
А тут на помощь нам приходит альтернативный вариант подключения файлов по старинке. Это вариант был предусмотрен как раз для использования в режиме отладки. Кроме того такой подход, как мне кажется, поощряет более мелкое разбиение на файлы. Когда я использовал старый метод ленивого подключения JavaScript'а, я постоянно испытывал некий дискомфорт при создании новых файлов (мол, что лишний раз на сервер ходить).
Также меня несколько напрягает следующая ситуация. Допустим я закончил проект и теперь должен задеплоить его. Я должен написать скрипт, который пройдется по моим js файлам и заминимизирует их. А если теперь я вдруг что-то поменял и хочу внести эту правку в боевую версию. Нужно пойти и запустить bat файл минимизатора (при этом желательно не запускать минимизатор, если нет изменённых файлов), а только потом, очевидно, что-нибудь типа rsync. Как-то много действий вместо простого копирования файла?
Хотя, за ответ спасибо. Мне кажется становиться понятно, что особых-то плюсов нет. То есть такой вариант ничем не лучше, а скорее всего даже хуже.
-1
На 1-й странице вам нужны js-скрипты A, B и C, вы компонуете их в файл ABC.
На 2-й странице нужны уже A, B и D и вы выдаёте ABD, в котором опять перегоняете браузеру содержимое A и B, которое он мог взять из кэша, будь это разные файлы.
Так что ваш дискомфорт от лишнего хождения на сервер может быть не всегда оправдан.
На 2-й странице нужны уже A, B и D и вы выдаёте ABD, в котором опять перегоняете браузеру содержимое A и B, которое он мог взять из кэша, будь это разные файлы.
Так что ваш дискомфорт от лишнего хождения на сервер может быть не всегда оправдан.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
JavaScript: обработка include_once/import на PHP