Я использую tars сборку, pug и bemto.
По структуре - pug, js и css файлы каждого компонента в своей папке.
В pug блок это миксин. Данные либо прописываю жестко, либо передаю в параметре data и подставляю, если они меняются в разных местах.
К синтаксису за один проект привык.
mixin page-header(data)
+b.page-header
+e.A.logo(href='/')
+e.A.tel(href='tel:+7 3452 299 299') +7 3452 299 299
+e.A.btn(href='#')!=data.btnText