parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Я ухватился за идею "Микро-гридов" (Компонентов) не могу понять ловлю ли велосипед или "стоит попробовать".

andylars 21.07.2015 18:21

в Templet как я понимаю - технически шаблоном является класс (в который он автоматически оборачивается).

Отсюда, у одной сущности шаблона Templet есть основной шаблон корневого уровня, он же @main
и могут быть методы - то есть декомпозиция на 1 уровень вниз.

Поддерживается ли вложенность, я не знаю, я в процессе чтения доки по Templet.
Но в основной идее, как я понял, шаблоне скорее плоский, чем многовложенный.

Я же, предлагаю примерно то же, только у меня Шаблон это скорее набор более мелких элементарных шаблончиков (микро-гридов), которые состыкованы в опр.порядке
и которым задан какой-то набор базовых параметров.

Фактически, получается, что имеем некий репозитарий/библиотеку элементарных и не очень - микро-гридов(шаблончиков),
из которых мы собираем конечную конституцию рендера.

Грид - это элементарный динамический шаблон (т.е. с кодом типа циклов, итераций если надо),
который имеет параметры:
- слоты: в них помещаются объекты которые могут быть отображены в body of main (строки, числа, код-на-парсер или вызовы вложенных гридов)
- опции (если грид умеет какие-то динамические вещи, для которых есть опции)

Конфигурация - это уже конечная состывка гидов в конкретном порядке ч/з слоты и попутное присваивание им параметров.

Конфигурацию можно отдельно хранить - тогда это будет Тема. Поскольку вложение в слоты кода и других гридов используется через junction, то
такую тему можно безопасно сохранить в виде хеша. Потому, что код не исполнится до момента обращения к junction уже внутри конкретного грида.

И потом на основе Темы-Конфигурации - перекрывать только часть параметров (через сложение хешей).

Изначально задумалось это для того, чтобы можно было дробить шаблон на элементарные универсальные гриды,
например какая-то "сетка итераций" может быть повторно использована в шаблоне форума, или галереи.

То есть, это аналог "компонентов" в Desktop UI.

Можно создать "тяжелый" компонент, тогда это будет скорее как обычный большой плоский шаблон.
А можно наделать кучу универсальных и строить из них, как из кубиков, например как-то так:
   ^Tpl:MainGrid[
      $.SideBar{
         ^Tpl:TopPreview[
            $.OptAmount(10)
            $.HashItems[$Model.Content.Article.HotList]
         ]
         ^Tpl:TopPreview[
            $.OptAmount(5)
            $.SortOrder(desc)
            $.HashItems[$Model.Content.News.HotList]
         ]
      }
      $.Body{
         ^Tpl:Article[
            $.Title[$Model.Content.Article.Id.[100].Title]
            $.Text[$Model.Content.Article.Id.[100].Body]
         ]
      }
      $.Footer[Copyright (c) 2015]
   ]
Опять меня привело к той же "серебярной пуле" - микро-модельному паттерну... не понимаю, кручусь вокруг чего-то одного и того же,
вроде бы и работает ведь, но как будто-все это укладывается во что-то одно, что я никак не могу охватить одним взглядом.

В общем, пока вот такие фантазии, может быть даже и воспаленные :) ведь это еще все надо поженить с CSS и JS
но к этому явно надо прикрутить assign, т.к это сразу погрязнет в process'ах.

Но главное, что такую модель можно просто использовать и не заморачиваясь в сложные случаи,
т.е. на 1-уровне декомпозиции - Page -> Header,Body,Footer.

В общем, гипотеза нуждается в тычках палочкой, попробую на простом, посмотрю что получится...
понятно, что надо урулить именование, и конфигурование сделать наверное не передачей одного супер-аргумента