@Matveih1 нужно большой подробностей: что именно подразумевается под БЭМом в данном случае? Шаблонизатор?
Да, шаблонизатор. Т.е. как собрать страницу с помощью Gulp я разобрался, а вот как на нее передать данные с сервера (в данном случае на Go) не понимаю.
Можно поискать v8 биндинги для Go, но можно и использовать https://github.com/zxqfox/http-proxy-mitm, чтобы рендерить в HTML ответ от бекенда на Go.
Собранные шаблоны надо будет использовать как раз в проксе.
Есть вот такая демка для PHP на хероку, но бекендом может быть что угодно: https://github.com/zxqfox/php-fpm-bem-demo-heroku
По поводу второго: есть два варианта, либо это сырые данные и в дерево представления они превращаются в прокси, либо это сразу дерево и на него накладываются какие-нибудь bemhtml шаблоны. Возможны и смешанные варианты, когда часть или некоторые части представлены деревом.
На вкус и цвет, надо самому пробовать и разбираться что больше нравится.
спасибо, но как то не тривиально. Уверен, что есть способ проще. Хочется собрать HTML по методологии БЭМ, который сможет парсить GO и возвращать клиенту. Или клиент запрашивает у сервера данные для страницы и уже на стороне клиента их парсит. Наверно вопрос звучит по другому: как с помощью БЭМ создавать не статичные страницы, а динамичные. Действительно не важно что выступает в качестве бекенда. например как мне заполнить справочник данными из json файла.
Ключевой момент, который необходимо понимать: шаблонизатор BEMHTML работает на JS. Так что если необходимо выполнять шаблоны на сервере, там потребуется либо node.js, либо еще какой-то вариант выполнения JavaScript. Если это требование устраивает, дальше все просто. В качестве примера см. https://github.com/bem/bem-express (там источником данных служит сервер на node.js, но принцип общий).
Если же подходит рендеринг на стороне браузера, то все еще проще:
BEMHTML.apply(myData)
и получаем HTML-строку, которую затем можно вставить в DOM.Рендеринг на стороне браузера, устраивает:
Например, так: https://jsfiddle.net/tadatuta/h307ayjc/2/
Спасибо за ответ, но пока все еще не понятно. Теперь мне логика не понятна. Есть сервер который на запрос клиента должен отправить html ( собранный из bemjson.js - собранный заранее) + json который распарсится на клиенте и будет счастье или html который потом спросит у сервера json который опять же распасится на стороне клиента. Или как то по другому все происходит. Есть пример чата с помощью бэм? Или что то динамическое.
Между фиддлом, который я привел в предыдущем ответе и чатом будет крайне мало отличий в плане работы с шаблонами. Общая идея такая:
var html = BEMHTML.apply(data);
).bemDom.append(domElem, html);
)Спасибо. Чувствую что уже близко, но не до конца понимаю. 1. Сервер вернет клиенту index.html который я собрал заранее с помощью gulp
Спасибо. Чувствую что уже близко, но не до конца понимаю. 1. Сервер вернет клиенту index.html который я собрал заранее с помощью gulp
Вполне норм