как правильно это осуществлять? Сейчас я указываю путь в блоке для борьщика и он цепляет библиотеку, У меня есть подозрение что это не совсем православный способ. Если мне эта библиотека понадобиться в других блоках то при указанном способе попадет несколько библиотек в общий js?
Всё верно. Это должен быть отдельный блок или элемент блока jquery в котором библиотека будет также инклюдиться борщиком. У ваших блоков останется только прописать зависимость.
т.е мне на уровне desktop.blocks нужно объявить блок jquery и внем добавить элемент который будет библиотекой и прописать все зависимости?
Например так
Это делается на уровне переопределения что я и написал? Я просто писал такую же конструкцию но в конкретном блоке. А как я понял надо в блоке jquery создать элемент и там писать этот код.
это делается на любом уровне но в папке jquery/__owlcarusel/
Т.е я создал папку jquery на уровне desktop.blocks в ней создал папку элемента и объявил новый элемент который зависит от jquery
Далее в нужном блоке прописал в deps.js
И в js нужного блока где юзаем нужную библиотеку
Так или на каком то этапе не верно? сама jquery определяется на уровне ядра как я понимаю
В нужном блоке не достаточно указать зависимость от jquery. Надо от конкретного элемента:
jquery автоматически подключается в bem-core с помощь блока loader, если он не был загружен другим способом.
В остальном всё верно.
Да все гуд, огромное спасибо! А если у меня есть какая либо библиотека, которая не имеет отношения к jquery, ее конечно можно объявить так же, но может есть более правильный способ?
объявляй точно также, но не как элемент блока jquery, а как самостоятельный блок
я так и не врубился как подключить d3js к проекту, создал свою библиотеку назвал d3. в этой библиотеке создал уровень common.blocks в ней определил блок d3js туда скопировал скачанный d3.min.js как должен выглядеть код блока libs/d3js/common.blocks/d3.js ?
что-то типа такого:
Но на самом деле можно качать неминимизированный — все равно весь проектный JS будет минимизирован в итоге, а исходный проще дебажить.
сейчас сделал по аналогии с jquery(полностью кроме урла с cdn). в своем блоке прописал зависимость(на всякий случай, что бы скачал) в браузере в обозревателе скачанных ресурсов jquery есть d3 нету. но d3.md появился в директории. пока разбираюсь. а можно скачать и локально в блоке положить его? и еще поврос по поводу /* borschik:include:d3.min.js */ что да как?
Спасибо большое за столь скорые ответы на вопросы, при такой поддержке не угасает желание разобраться с БЭМом
по borschik нашел ответ. он и подключает содержимое файла? вот что получилось в d3.js
да, но только локально. если нужно загружать по http, то действительно стоит смотреть как реализовано подключение
jQuery
.В page.deps.js дописал блок
и вот результат http://prntscr.com/b3766j возможно ли подключить блок d3 к странице(блоку page) из самой библиотеки блока(d3)? правильно ли будет это сделать в bemhtml(через контекст болока page)?
я пока не понимаю, какую задачу нужно решить. блок d3 же просто предоставляет библиотеку, верно? я бы ожидал, что его будут использовать какие-то блоки уровня проекта, чтобы делать какие-то конкретные штуки.
в каком-то примерно таком духе:
Да правильно! в итоге получится библиотека с блоком содержащим d3js и другие блоки(для отрисовки различных диаграмм, типа bar-char, donut-chart и тд) но все равно не смог подключить d3 ни вашим ни своим методом =( gitlab-репозиторий
https://gitlab.com/Mayak/d3-charts/merge_requests/1
tadatuta Спасибо! смог использовать D3 оказывается при определении блока обязательно надо указывать "i-bem__dom" !?
Если декларируется блок с DOM-представлением, то да.
Подробнее см. https://ru.bem.info/technology/i-bem/v2/i-bem-js-decl/