This README is also available in English.
Базовая библиотека блоков для разработки веб-интерфейсов. Содержит только необходимый минимум для разработки клиентского JS и HTML-шаблонов.
Наиболее простым способом начать проект с использованием bem-core
является
project-stub.
Вы также можете добавить библиотеку к себе в проект любым известным вам способом.
common.blocks
— предназначен для любых устройств и браузеровdesktop.blocks
— следует использовать для всех десктопных браузеровtouch.blocks
— реализует некоторую специфику для тач-платформ
i-bem
— базовый блок с хелперами для JS и HTMLstrings
— хелперы для JS-строкobjects
— хелперы для JS-объектовfunctions
— хелперы для JS-функцийevents
— JS-событияquerystring
— работа со строкой запросаtick
— глобальный таймерidle
— IDLE-событиеnext-tick
— полифил дляnextTick
/setTimeout(0, ...)
inherit
— ООП-хелперыjquery
— jQueryclearfix
— CSS-трюк clearfixidentify
— идентификация JS-объектовcookie
— хелперы для работы с браузерными кукамиvow
— реализация Promises/A+dom
— хелперы для работы с DOMloader
— загрузчик для JS-файловua
— определение возможностей браузераkeyboard
— хелперы для работы с клавиатуройpage
— скелет для html/head/body
- vanilla.js + browser.js
- bemhtml
- bemtree
Автосгенерированная документация на JavaScript API блоков (JSDoc) можно посмотреть в отдельной ветке v2-jsdoc.
Обратите внимание, содержимое ветки «v2-jsdoc» обновляется автоматически. Любые изменения необходимо отправлять в код соответствующих блоков в ветке «v2», как описано в разделе «Внесение изменений» ниже.
История изменений доступна на отдельной странице.
Миграция описана на отдельной странице.
-
Получаем исходники нужной версии (например,
v1
):$ git clone -b v1 git://github.com/bem/bem-core.git $ cd bem-core
-
Устанавливаем зависимости:
$ npm install
Для последующего запуска локально установленных npm-зависимостей нам потребуется
export PATH=./node_modules/.bin:$PATH
или любой альтернативный способ. -
Устанавливаем зависимые библиотеки:
$ npm run deps
-
Собираем примеры и тесты:
$ npm test
-
Запускаем разработческий сервер:
$ npm start
- Создать issue с описанием сути изменений.
- Определить в какую версию необходимо внести изменения.
- Сделать feature-branch с указанием номера issue и версии (
issues/<номер_issue>@v<номер_версии>
) на основе ветки версии. Например, для issue с номером 42 и версией 1:git checkout -b issues/42@v1 v1
. Если изменения нужно внести в несколько версий, то для каждой из версий создаётся отдельная ветка. - Сделать изменения, закоммитить и сделать push. Если это необходимо, то нужно сделать rebase от базовой ветки версии.
- Создать pull-request на основе созданной ветки (или несколько pull-request-ов для случая изменений в нескольких версиях).
- Любым способом связать pull-request и issue (например, c помощью комментария).
- Ждать закрытия pull-request и issue ;-)
Сборка дефолтного тестового бандла для functions__debounce
:
$ magic make desktop.specs/functions__debounce
После сборки тестового бандла вы увидите результаты выполнения тестов в консоли.
Их также можно посмотреть в браузере, открыв desktop.specs/functions__debounce/spec-js+browser-js+bemhtml/spec-js+browser-js+bemhtml.html
.
По аналогии можно запустить тесты для других БЭМ-сущностей, имеющих реализацию в технологии spec.js
.
Чтобы собрать статистику покрытия кода тестами, необходимо добавить переменную окружения ISTANBUL_COVERAGE=yes
в сборке тестового бандла:
$ ISTANBUL_COVERAGE=yes magic make desktop.specs && istanbul report html
Сбор статистики покрытия тестами так же работает для запуска тестов конкретной БЭМ-сущности.
Пример для functions__debounce
$ ISTANBUL_COVERAGE=yes magic make desktop.specs/functions__debounce && istanbul report html
После завершения выполнения тестов, можно посмотреть отчет о покрытии кода тестами, открыв в браузере страницу
coverage/index.html
.
Полный отчет и статистику покрытия кода библиотеки тестами можно посмотреть на странице профиля bem-core в проекте Coveralls.
Для сборки и запуска тестов используется библиотека enb-bem-specs. См. подробную информацию про инфраструктуру тестирования.
Мы поддерживаем браузеры на основе статистики, получаемой на сервисах Яндекса.
Браузеры с долей более 2% пользователей попадают в полную совместимость, с более 0.5% — в частичную, что означает, что данные будут доступны, но возможна деградация. В браузерах с долей менее 0.5% мы прекращаем тестирование.
- Google Chrome 29+
- Firefox 24+
- Yandex 1.7+
- Opera 12.16
- MSIE 10.0
- MSIE 9.0
- MSIE 8.0
- Opera 12.15
- Opera 17.0
- Opera 16.0
- Opera 12.14
- Opera 12.2
- Firefox 23
- iOS 6+
- Android 2.3+
- Opera Mobile 12+
- Windows Phone 7+
- iOS 5
- Android 2.2
© 2012 YANDEX LLC. Код лицензирован Mozilla Public License 2.0.