Как стать автором
Обновить
15
0
Артём Курбатов @tenorok

Пользователь

Отправить сообщение
Самое простое — это то, чего нет. В результате сборки модульная система отсутствует.
Переживёт, ведь собранный файл представляет из себя чистый код вроде такого:

(function(global, undefined) {
var a = (function () { return 'a'; }).call(global),
    b = (function () { return 'b'; }).call(global),
    c = (function (a, b) { return a + b + 'c'; }).call(global, a, b);
})(this);
browserify — отлиная штука, мне она очень нравится, но для работы собранного кода она добавляет реализацию дополнительных функций вроде define, а я хочу получать чистый код
require.js не нравится тем, что после сборки требуются дополнительные функции для работы кода, а вырезать их, как это делает jQuery — не хочется: github.com/jquery/jquery/blob/master/build/tasks/build.js
БЭМ — это не только про CSS, это ещё и про JS, шаблонизацию, файловую структуру и про сборку проекта, поэтому очень удобно оперировать именно такими сущностями.

А если сделать каскад:
.a .header {}

то получится, что это селектор на блок header, который вложен в блок a. Но так писать не стоит, потому что теряется смысл независимости блоков.
Возьмём блок a, у него есть элемент header. И ещё блок b, у него тоже есть элемент header.

Получится такой css:

.a {}
    .a__header {}

.b {}
    .b__header {}


У каждого блока элемент header может выглядеть абсолютно по-разному, но иметь одинаковое название.
Если вам достаточно написать вручную HTML, по-быстрому накидать CSS и не менять регулярно внешний вид страницы, то можно обойтись традиционным подходом.

Как родилась методология БЭМ и зачем делать всё так сложно — об этом хорошо рассказывает Сергей Бережной в своём докладе на YaC 2011: video.yandex.ru/users/ya-events/view/387/
По сути блок — это и есть пространство имён. В этом пространстве задаются модификаторы и могут быть вложены элементы.
Проблема одноимённых пространств имён есть всегда.
В новой библиотеке bem-core, допускаются булевы модификаторы, об этом есть упоминание здесь: ru.bem.info/libs/bem-core/1.0.0/i-bem.js/i-bem-js/
У разных блоков разные имена. Если же появляется элемент интерфейса, совсем немного отличающийся от уже существующего, то можно взять готовый блок и добавить ему модификатор, всё верно.
Убедили, добавил issue.
Понял идею. Это конечно круто, но тяжело будет сделать.
Если что, могу рассмотреть пулреквест :)
Например, ignore добавляет игнорируемые классы, а не полностью переопределяет заданный ранее список.

Можно сделать обёртку, которая будет возвращать экземпляр со стандартными настройками.
return (function() {
    return new Autoclasscss().tag(true).flat(false);
})();

И на проектах использовать её, переопределяя необходимые опции.
require('autoclasscss').tag(false).set('<html>').get();
Речь идёт о сортировке css-свойств?
Для этого есть классная штука, csscomb.
Ну, чтобы можно было написать html, открыть в браузере страничку с визуальным интерфейсом и скопировать от туда результирующий css.
Да, но у меня не используется AMD.
А если надо применить этот скрипт в AMD, то его достаточно вызвать в нужном контексте.
Почему нельзя просто?
(function(global) {

})(this);
Потому что рассчитываю на использование только в браузере.
Как вы думаете, нужен ли CLI для этой штуки?
Вы же сами настраиваете вывод, сделайте так, чтобы он добавлялся в конец :)

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность