Что написано в коде блока-шаблона?

Пытаюсь понять, как правильно создавать готовую сборку для работы над вэб-проектами и дальнейшей сборки через webpack.

Нашел вроде бы неплохую статью про это: https://nicothin.pro/page/my-start-kit Но некоторые моменты непонятны, а именно:

В статье есть ссылка на "веб-представление" https://nicothin.pro/NTH-start-project/blocks-demo.html в котором есть описания блоков со ссылками на гитхаб.

Например, код блока footer: https://github.com/nicothin/NTH-start-project/blob/master/src/blocks/page-footer/page-footer.pug

введите сюда описание изображения

Понятно, что создается миксин mixin page-footer, но непонятно, что за (mods)? Хоть там и написано, что mods {string} - принимает список модификаторов, но ...зачем, для чего и куда это применять? Это же вроде просто миксин, вызвал с помощью +page-footer и все, но для чего этот (mods)?

Также непонятно, что в целом написано после комментария // список модификаторов. Единственное, что я понял, так это что в переменной var modsList = mods.split(',') задается разделение модификаторов через запятые и что modsList[i].trim() удаляет пробелы у элемента цикла.


Ответы (1 шт):

Автор решения: Gleb Kemarsky

В HTML коде модификаторы будут выглядеть, как дополнительные классы стилей к блоку с подвалом. Например:

<footer class="page-footer page-footer--black page-footer--big">...</footer>

Миксин на скриншоте помогает компоновать этот HTML. Вызываем page-footer('black,big') и получаем указанный выше код для подвала.

Фрагмент под комментарием "список модификаторов" обрабатывает параметр mods, который мы передали миксину. В этом параметре мы перечислили через запятую окончания классов-модификаторов: 'black,big'.

  1. проверяем, что он задан и что он не пустой:
    if(typeof(mods) !== 'undefined' && mods);
  2. разбиваем строку из mods на элементы массива;
  3. поочерёдно дополняем их до полных названий классов-модификаторов и добавляем к переменной allMods:
    allMods = allMods + ' page-footer--' + modList[i].trim()

В итоге переменная allMods будет содержать строку вида page-footer--black page-footer--big, которую используем в следующем фрагменте кода. Её значение попадёт в атрибут class нашего подвала как добавление к основному классу page-footer.

→ Ссылка