Scala / Lift - Попытка понять одновременное заявление Lift об использовании действительного html и склонности к подъему: теги и перезапись тегов в рендере

Все семь вещей ( http://seventhings.liftweb.net/ ), безусловно, хороши, но я был особенно восторжен по поводу утверждения в шаблонах ( http: // седьмые .liftweb.net / templates ), что "Lift поддерживает удобные для дизайнеров шаблоны."

В качестве одного из шагов в изучении того, как работает Lift, я пытаюсь создать простую форму создания объекта: взять несколько параметров, использовать их в качестве аргументов конструктора, а затем убрать объект. После некоторых исследований и экспериментов Тем не менее, у меня есть две проблемы:

  1. Похоже, существует значительная склонность к значительному переписыванию / украшению разметки шаблона во фрагментах.
  2. Формы, похоже, не используют допустимые или узнаваемые элементы html.

Что я Я основываю это на:

Примеры / документация форм, похоже, посвящены специальным тегам lift: Exploring Lift предполагает, что форма должна выглядеть следующим образом: ( http: //exploring.liftweb .net / master / index-6.html )


  
  

Я не уверен, что это даже действительный html5, и хотя он может быть действительным xhtml, похоже, что это не соответствует духу того, что ваши шаблоны выглядят как настоящий html для наших друзей-дизайнеров. Я где-то еще читал (не могу найти его снова), что у нас была возможность использовать фактический ввод ta gs, но тогда мы не получим некоторые части причудливой формы Lift или что-то вроде этого, отрывок не был очень ясен в отношении того, что именно я бы упустил, и примеры, похоже, не заинтересованы в моем написании простого html-форма, создающая обычное сообщение в формате html.

Код примера demo.liftweb.net (1) предполагает, что ваш шаблон должен выглядеть так (2)


  

Код для фрагмента PersonScreen тоже не очень понятен. (3). Есть несколько других примеров шаблона, который, например, только тег ul в определенном месте только для генерации целой серии сложных li с вложенными элементами во фрагменте. Конечно, вы можете использовать xml в Scala, и он неплохо читается, но все равно разбрасывает вашу разметку повсюду. Похоже, это нарушает дух «шаблонов, удобных для дизайнеров».

То, что я хочу понять.

В течение долгого времени я строго следовал двум правилам при разработке веб-приложений:

  1. Никакой разметки в «коде» (контроллеры, бизнес-модели).
  2. Никакой бизнес-логики в шаблонах.

Идиоматический подъем, кажется, полностью игнорирует первое правило и полностью упускает ценность второго правила. Эти правила сослужили мне хорошую службу, и я не готов просто следовать примерам, которые, кажется, нарушают их, не понимая, почему это не приведет к беспорядку. Я хочу понять, почему в Lift нормально, когда в сниппетах создается так много кода отображения. Я также хочу понять, почему нормально, что разметка в шаблонах так редко отражает результат.

Чего я (думаю, я) хочу:

Я хочу, чтобы вся моя разметка с очень небольшим количеством исключений, если таковые вообще были в моих шаблонах. Я хочу, чтобы мои фрагменты выполняли минимальное искажение шаблона, обычно заменяя только текст элемента на «листовые» теги и, возможно, настраивая значения атрибутов. Я думаю, что сделал это для достаточно сложного примера отображения, и подозреваю, что мог бы использовать ту же технику для создания ванильной html-формы, а затем обрабатывать параметры самостоятельно. Это то, что мне нужно сделать, если я хочу, чтобы мой шаблон выглядел как форма конечного результата?

Ответы и любые другие мысли, особенно о том, как понять мышление Lift в отношении этого материала, были бы чрезвычайно признательны.

Спасибо!

  1. http://demo.liftweb.net/simple_screen?F674431078927QJVVYD=_
  2. https://github.com/lift/examples/blob/master/combo/example/src/main/webapp/simple_screen.html
  3. https://github.com/lift/examples/blob/master/combo/example/src/main/scala/net/liftweb/example/snippet/Wizard.scala#L94

ИЗМЕНИТЬ

В ответ на @ OXMO456. (Спасибо за ответ.)

У меня есть, и они, кажется, только подтверждают мои опасения: например. мы начинаем с:

Шаблоны лифта не содержат исполняемого кода. Это чистый, необработанный, действительный HTML.

и это здорово. Затем позже:

Последние два механизма для вызова сниппетов не приведут к созданию действительных шаблонов Html5.

и все же каждый, кажется, использует первый из этих двух механизмов. Кроме того, в нем говорится:

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

Вторая ссылка полезна и поучительна, но это довольно ясно дает понять, что это не The Lift Way. Тем не менее, The Lift Way, похоже, перетаскивает целую нагрузку генерации разметки в сниппеты, что (я думаю) представляет собой огромное сочетание разметки и бизнес-логики. Это лифт?

12
задан kevinji 23 June 2011 в 00:02
поделиться