bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

Как подключить сторонний JS/CSS? #288

Open antonowano opened 9 years ago

antonowano commented 9 years ago

Люблю в проектах использовать UIKit. Где хранить сторонние JS/CSS и как их подключать в BEMJSON? Также для UIKit нужен заранее подключенный jQuery, он есть в bem-core, возможно ли инициализировать без дополнительного скачивания.

apsavin commented 9 years ago

Вы можете устанавливать их через bower и хранить в папке libs. Подключать можно, например, так:

/* в css файле какого-то блока (например, специального, его можно так и назвать - uikit) */
@import url(../relative/path/to/uikit.css);
// в js файле
// строка ниже заменится на скрипт, до которого путь:
/*borschik:include:../../path/to/some.js*/;
// соответственно, ее можно обернуть в modules.define, например
apsavin commented 9 years ago

Если вы создадите на своем уровне блок jquery, в нем файл jquery.js, а в этом файле -

/*borschik:include:../../libs/jquery/dist/jquery.min.js*/

То jquery должен приехать только один на страницу.

antonowano commented 9 years ago

а как подключить uikit.js как плагин jquery. используя jquery встроенный в bem?

apsavin commented 9 years ago

Я бы сделал так:

  1. создал на своем уровне блок jquery.
  2. У него бы создал элемент jquery__uikit
  3. Добавил бы этому элементу зависимость от jquery.

jquery__uikit.js:

modules.define('jquery', function (provide, jQuery) {
    /*borschik:include:../../../libs/uikit/path/to/plugin.js*/
    provide(jQuery);
});

jquery__uikit.deps.js:

({
    mustDeps: ['jquery']
})
antonowano commented 9 years ago
modules.define('jquery', function (provide, jQuery) {
    window.jQuery = jQuery;
    /*borschik:include:../../libs/uikit/js/uikit.min.js*/
    provide(jQuery);
});

это помогло, спасибо. на данный момент у uikit работают только core-функции, но он также оснащён дополнительными компонентами (файлы css, js), которые подключаются вручную по мере использования, хотелось бы настроить так чтобы они также подключались в BEMJSON по необходимости

apsavin commented 9 years ago

Ну, вот таким нехитрым образом можно замапить свои блоки или элементы какого-то блока (uikit?) на css и js из библиотеки. А дальше они уже будут по зависимостям подтягиваться.

Guria commented 9 years ago

Разложить по элементам / модификаторам по аналогии.

antonowano commented 9 years ago

для удобства работы всё же придется делать свои bem-components на основе uikit архитектуры.

apsavin commented 9 years ago

@antonowano Если сделаете и хорошо оформите на гитхабе - будет отличная библитека, которой смогут воспользоваться другие, кому тоже нравится uikit и bem.)

antonowano commented 9 years ago

я с bem еще плохо знаком, но сама методология меня привлекла.

apsavin commented 9 years ago

БЭМ вдвойне вкусней, когда кроме методологии пользуешься еще и специально под нее разработанными инструментами и технологиями, но не обязательно пытаться сразу съесть слона целиком.