Все семь вещей (http://seventhings.liftweb.net/), безусловно, хороши, но я был особенно рад заявлению в шаблонах (http://seventhings.liftweb.net/templates)), что «Lift поддерживает шаблоны, дружественные для дизайнера».
В качестве одного из моих шагов в изучении способа работы Lift я пытаюсь создать простую форму создания объекта: взять несколько параметров, использовать их в качестве аргументов конструктора, а затем убрать объект. После некоторых исследований и экспериментов,У меня есть две проблемы:
- Кажется, существует значительная склонность к значительному переписыванию / украшению разметки шаблона во фрагментах.
- В формах, похоже, не используются действительные или распознаваемые элементы HTML.
На чем я основываю это:
Примеры форм / документация, похоже, посвящены специальным функциям: теги. Исследование подъема предполагает, что форма должна выглядеть следующим образом: (http://exploring.liftweb.net/master/index-6.html)
<lift:Ledger.add form="POST">
<entry:description />
<entry:amount /><br />
<entry:submit />
</lift:Ledger.add>
Я не уверен, что это даже допустимый html5, и хотя он может быть действительным xhtml, он dНе кажется, что это соответствует духу того, что ваши шаблоны выглядят как настоящий html для наших дизайнерских друзей.Я читал где-то еще (не могу найти это снова), что у нас была возможность использовать фактические входные теги, но тогда мы не получили бы некоторые части причудливой формы Lift или что-то подобное, отрывок не был очень яснымо том, что именно я упустил бы, и примеры, кажется, не интересуют мое написание простой HTML-формы для создания простого HTML-сообщения.
Код для примера demo.liftweb.net (1) предлагаетчтобы ваш шаблон выглядел следующим образом (2)
<lift:surround with="default" at="content">
<div class="lift:PersonScreen"></div>
</lift:surround>
Код фрагмента PersonScreen также не совсем светится (3).Есть несколько других примеров шаблона, который имеет, например, только тег ul в определенном месте только для генерации целой серии сложных li с вложенными элементами во фрагменте.Конечно, вы можете использовать xml в Scala, и он читается сносно, но он по-прежнему разбрасывает вашу разметку повсюду.Кажется, это нарушает дух «дружественных дизайнеров шаблонов».
Что я хочу понять.
Долгое время я строго придерживался двух правил в своемразработка веб-приложений:
- Нет разметки в 'коде' (контроллеры, бизнес-модели).
- Нет бизнес-логики в шаблонах.
Idiomatic Liftкажется, полностью отказаться от первого правила и полностью упустить значение второго правила.Эти правила хорошо послужили мне, и я не готов просто следовать за примерами, которые, кажется, нарушают их, не понимая, почему это не приведет к беспорядку.Я хочу понять, почему в Lift нормально генерировать столько кода для отображения во фрагментах.Я также хочу понять, почему хорошо, что разметка в шаблонах так редко отражает вывод.
То, что я (думаю) хочу:
Я хочу всемоя разметка с очень немногими исключениями, если они есть, в моих шаблонах.Я хочу, чтобы мои фрагменты выполняли минимальное искажение шаблона, обычно заменяя только текст элемента на «листовых» тегах и, возможно, настраивая значения атрибутов.Я думаю, что я сделал это для довольно сложного примера отображения, и я подозреваю, что мог бы использовать ту же технику для генерации ванильной HTML-формы, а затем обрабатывать параметры самостоятельно.Это то, что мне нужно сделать, если я хочу, чтобы мой шаблон выглядел как форма конечного результата?
Отклики и любые другие мысли, особенно по поводу понимания мышления Lift относительно этого материала, были бы чрезвычайно признательны.
Спасибо!
- http://demo.liftweb.net/simple_screen?F674431078927QJVVYD=_
- https://github.com/lift/examples/blob/master/combo/example/src/main/webapp/simple_screen.html
- 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 тянет весь фрагмент генерации разметки в фрагменты, что (я думаю) является огромным сочетанием разметки и бизнес-логики. Это Подъемный Путь?