Может быть, хотя я — вполне себе любой разработчик не из Яндекса.
Кстати, я тут подумал, что мне все-таки будет не очень просто сделать нормальную интеграцию bem-priv+bh, потому что первым я вообще не пользовался, а на втором сделал только один небольшой проект. А там ведь наверняка свои «лучшие практики» уже и сформировавшися подходы.
Ну, скобочек многовато, конечно, но свою задачу вполне решает.
Когда я начинал, то хотел сразу делать и под bh, но не нашел аналога bemtree. Сейчас появился, судя по тому проекту, на который чуть выше дает ссылку tadatuta, можно добавить поддержку. Это не должно быть очень сложно.
В случае bnsf подобную проблему можно решить, например, таким способом:
// в этот блок вложен элемент data, в котором есть свой запрос
block('user-card').content()(function () {
// рендерим элемент data
var dataBlock = applyCtx({
elem: 'data'
});
// шлем запрос
return this.get('users', {
user_ids: this.route.parameters.id
}, function (data) {
// что-то делаем с отрендеренным элементом и ответом от сервера
return [dataBlock, {elem: 'bla', content: data.body}];
});
});
// описание элемента data, который посылает запрос
block('user-card').elem('data').content()(function () {
return this.get('users', {
user_ids: 1
}, function (data) {
return data.body;
});
});
Запросы объединятся. Выбор, когда рендерить блоки — до отправки запроса или после — остается за разработчиком.
Конечно, видел, пробовал.
Многое не понравилось.
Например, там плохо реализована маршрутизация. Если про то, что там есть для роутинга, вообще можно употреблять такие слова как «маршрутизация» и «реализована».
Меня не устраивает это решение.
1. Если мы его используем только там, где бывают литералы — то у нас возникает два разных способа вызвать родительский метод. Не круто.
2. Если мы его используем везде — то везде постоянно будет проверяться, функция или нет выше по цепочке. Тоже не круто.
Я думаю, можно прекратить обсуждение. Я вас понимаю, вы меня, наверное, тоже.
А когда вы захотите наследоваться и что-то переопределить — вам придется менять литерал на метод в родительском классе или использовать особый способ вызывать родительский метод, умеющий обрабатывать ситуацию, когда выше по цепочке — литерал. Вот этот момент мне кажется важным.
Я предпочитаю IDE от JetBrains, там есть Live Templates:
Набираете несколько символов, нажимаете Tab — и шаблонный код готов. Я даже видео для вас записал.
В вашем любимом редакторе, наверняка, тоже есть что-то подобное.
Писать легко, единообразие во всех файлах достигается без усилий.
Я не говорил, что this.someThing = this.$('.js-someThing') это круто.
Я имел в виду, что предпочитаю метод, возвращающий результат, подобным объектам в прототипе.
Метод по ссылке — выход, но, на мой взгляд, способ позвать реализацию в родителе должен быть один — что-нибудь вроде backbone-super.
Напишите на ru.bem.info/forum пост — там намного больше народу увидит.
bem create
. Вот дока. Можете пояснить в двух словах, в чем разница?Кстати, я тут подумал, что мне все-таки будет не очень просто сделать нормальную интеграцию bem-priv+bh, потому что первым я вообще не пользовался, а на втором сделал только один небольшой проект. А там ведь наверняка свои «лучшие практики» уже и сформировавшися подходы.
Когда я начинал, то хотел сразу делать и под bh, но не нашел аналога bemtree. Сейчас появился, судя по тому проекту, на который чуть выше дает ссылку tadatuta, можно добавить поддержку. Это не должно быть очень сложно.
Запросы объединятся. Выбор, когда рендерить блоки — до отправки запроса или после — остается за разработчиком.
Многое не понравилось.
Например, там плохо реализована маршрутизация. Если про то, что там есть для роутинга, вообще можно употреблять такие слова как «маршрутизация» и «реализована».
А если не оставлять — то что использовать взамен?
1. Если мы его используем только там, где бывают литералы — то у нас возникает два разных способа вызвать родительский метод. Не круто.
2. Если мы его используем везде — то везде постоянно будет проверяться, функция или нет выше по цепочке. Тоже не круто.
Я думаю, можно прекратить обсуждение. Я вас понимаю, вы меня, наверное, тоже.
Буду рад, если предложите таковой.
Я предпочитаю IDE от JetBrains, там есть Live Templates:
Набираете несколько символов, нажимаете Tab — и шаблонный код готов. Я даже видео для вас записал.
В вашем любимом редакторе, наверняка, тоже есть что-то подобное.
Писать легко, единообразие во всех файлах достигается без усилий.
Зато понимаю ваше стремление к красивому коду. Просто предпочитаю однообразие.
Вы так говорите, как будто метод вместо объекта — это очень сложно или долго.
Суть не в том, как именно звать родительскую реализацию, а в том, чтобы всегда делать это одинаково.
this.someThing = this.$('.js-someThing')
это круто.Я имел в виду, что предпочитаю метод, возвращающий результат, подобным объектам в прототипе.
Метод по ссылке — выход, но, на мой взгляд, способ позвать реализацию в родителе должен быть один — что-нибудь вроде backbone-super.