• Как реализовать БЭМ блоки для jade (pug), stylus?

    qfox
    @qfox
    Ответы есть у меня
    Пожалуй, посоветую следующее:
    1) Иметь хелперы в jade, переменную с названием блока типа b, гененрацию модификатора типа mod(b, 'name', 'val'), переменную content (у меня это объект с toString()) с содержимым блока, и т.п.
    2) Не использовать include вообще, чтобы можно было строить дерево, просчитывать в рилтайме зависимости, и даже собирать assets для страницы. Например, через какието хелперы, опять же. При большом делении на блоки все повиснет, конечно, но надо научиться их умно кешировать.
    3) На вход постарайтесь подавать bemjson-like структуру с доработками под себя. У нас в проекте сейчас это поле data, в которое кладутся любые данные, нужные для блока. Подтягивание внутренних блоков (и их последующую отрисовку) мы делаем либо в самих шаблонах, либо из объекта content, если контент состоит из массива блоков и строк.
    4) Если нужно будет где-то подтянуть блок в элемент — научите хелперы block/element из (2) подмешивать данные при прямом вызове хелпера.
    5) Если все замечательно — в конце все собранные assets можно в заголовке (css) и в подвале (js) страницы, предварительно прогнав через uglifyjs, csso, но только на продакшне, где есть их кеширование на nginx.

    У нас это все на пхп со смарти (так звезды сложились), но вполне подойдет для рантайм js с jade. Работает замечательно.

    Но вообще, если вы используете js, то удобнее использовать bemhtml свежий с js синтаксисом. На bem.info пока не обновляли доку, но базовые блоки в самой библиотеке вполне описывают синтаксис. Будет бонус — шаблоны самодостаточны, и на морде не потребуют подгрузки доп. библиотек, можно будет запускать как есть. В гульп их сборку встроить тоже можно.
    Ответ написан
    4 комментария
  • Как организовать поиск по библиотеке книг?

    @mik222
    Ответ от Uwe_Boll неправильный(а то и прямо, вредный)
    Дело в том, что не identity поиск не может использовать стандартный индекс.
    ------------
    Я имею ввиду, что запросы вида %some word% нельзя отсортировать, и соответственно по ним нельзя пройтись бинарным поиском как это делают в случае обычных индексов, делая ваш индекс, фактически, бессмысленным превращая O(log N) алгоритм в O(N)
    -------------
    У вас, фактически, только один вариант:
    Обратный индекс с взвешиванием по https://en.wikipedia.org/wiki/Tf%E2%80%93idf
    Для этого вы можете использовать:
    https://www.postgresql.org/docs/8.3/static/textsea...
    https://www.sqlite.org/fts3.html
    dev.mysql.com/doc/refman/5.7/en/fulltext-search.html
    https://www.elastic.co/
    Ответ написан
    Комментировать