Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 0384f92
Showing
1 changed file
with
43 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
== БЭМ-метод | ||
|
||
=== Задачи | ||
|
||
* разделять код на логические части | ||
* разделять ответственность | ||
* повторно использовать | ||
* использовать без погружения в детали реализации | ||
* "многоязычный" код (например как в веб-технологиях, html+css+js) | ||
* добавлять в продакшен рантайм только действительно используемые части | ||
=== Метод | ||
|
||
* Блоки | ||
* представлены в нескольких технологиях | ||
* технологии "вторичны", структура блока первична | ||
* могут быть глобальные блоки, влияющие на весь run-time какой-то технологии | ||
* могут быть зависимости между блоками | ||
* Элементы блока | ||
* опциональная часть блока | ||
* Модификаторы блока и элемента | ||
* опциональная кастомизация блока или элемента | ||
* возможно использование нескольких модификаторов и их значений в одном рантайме | ||
* Уровни переопределения | ||
* кастомизации всего рантайма | ||
* Данные блока и элемента | ||
* неформализованная вариативность блока | ||
=== Вариант реализации | ||
|
||
* Блоки | ||
* представляются папками по имени блока | ||
* в папке блока лежат файлы (и возможно папки) по технологиям реализации | ||
* Элементы блока | ||
* представляются папками с префиксом "__" внутри папки блока | ||
* в папке элемента лежат файлы (и возможно папки) по технологиям реализации | ||
* Модификаторы | ||
* представляются папками с префиксом "_" внутри папки блока или элемента | ||
* в папке модификатора лежат файлы (и возможно папки) по технологиям реализации | ||
* Зависимости описываются в специальном файле *.require | ||
* Уровни переопределения представляются набором папок с определённым порядком, в которых хранятся описания блоков | ||
* Данные блока никак не формализованны | ||
* Использование блоков |