О вендорах

В движке используется ряд библиотек, которые необходимы для его работы. Однако множество плагинов и даже шаблонов используют еще какие-то библиотеки. Порой бывает так, что несколько плагинов подключают одни и те же библиотеки. Из того что припоминаю — это какие либо элементы jquery-ui, не входящие в движок, либы для стилизации чекбоксов например, choosen-ы всякие.

В этой связи есть предложение:
1. Выбрать в сообществе голосованием список таких вендоров
2. Включить их в движок
3. Подключать только те, которые необходимы для работы движка и дефолтного скина
4. В админке дать возможность подключать другие либы из списка
5. В плагины и сторонние скины добавить параметр зависимости required vendors
6. При активации плагинов выдавать msg типа: «для работы этого модуля необходимо подключить следующие библиотеки:… с указанием версий»

4-й пункт можно «проапгрейдить» и через какой-нибудь созданный репо со скриптами «стандартизации» под LS подгружать либы с их источников или cdn-ов. «Стандартизация» будет заключаться в расположении директорий и проверку на конфликты библиотек друг с другом.

15 комментариев

avatar
Начиная с версии 1.0 при подключении css/js можно указывать уникальное имя библиотеки (обычно совпадает с названием, например, name = 'jquery.scroll'). При таком подходе исключается загрузка двух и более библиотек с одинаковым названием.
Все что нужно, это чтобы разработчики следовали этому.
  • ort
  • +2
avatar
Это имеются ввиду те библиотеки, которые уже есть в движке?
avatar
для любых
avatar
кстати, а тут промах есть — а версия-то может быть нужна другая для нового плагина, поэтому нужно в нейм пихать и версию или лучше добавить параметр сравнения версии.
avatar
пока не представляю, как три одинаковых плагина разных версий могут работать одновременно или на выбор
avatar
не про то.

движок требует библиотеку 1 версии (она входит в него), плагин А — второй (содержит), плагин Б — третьей (содержит).

Вот движку нужно загружать библиотеку последней, 3-й версии из плагина.
avatar
для этого нужно условие 100% обратной совместимости библиотек, что маловероятно
avatar
твое решение?..
avatar
решение чего? мы тут вроде только пытаемся обсудить проблему
avatar
как ты видишь решение этой проблемы. я свое уже предложил.
avatar
Текущие решение уже есть с версии 1.0.
Вся демагогия сводится к алгоритму выбора одной копии либы из нескольких. Текущий алгоритм выбирает первую объявленную. Ты предлагаешь выбирать последнюю версию. Оба варианта не гарантируют работоспособности и в конфликтных ситуациях нужно разруливать вручную — проставлять флаг replace=true и приоритетной копии. Но твой вариант дополнительно потребует усложнения логики — необходимо проставлять версии, каким то образом учитывать либы без проставленных версий.
Вопрос в целесообразности этого, если все равно придется руками отметить нужную копию.
avatar
Думаю, сами разработчики должны договариваться и поддерживать последние версии.
Движок может делать запросы на источник либы и подгружать (точнее добавлять) новую версию автоматом. Своего рода репозиторий. Это, наверное, дело отдельного модуля…
А в required плагинов указывать также требования к версиям библиотек:
<required>
    <vendors>
        <vendor name="superjs" version="1.0.0" condition=">=">SuperJS</vendor>
    </vendors>
</required>

и при активации админка выдает msg — соответствуют ли требования плагина с вендорами движка.

Что касается конфликтов версий — то эта проблема (риск) существует и сейчас, если разные плагины используют одни и те же либы разных версий, поэтому и предлагаю возможную логику решения.
avatar
не понятно зачем все так усложнять, если результат будет тот же — подключение одной копии либы определенной версии, которая не дает гарантий по работоспособности для других плагинов.
avatar
Кстати вот пример подобного репо
avatar
только сделать не cdn (т.к. по для cdn нужны ресурсы, а если их мало — то это риски), а автоаплоад в движок
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.