Все семь вещей (http://seventhings.liftweb.net/), безусловно, приятны, но я был особенно в восторге от претензии в Шаблонах (http://seventhings.liftweb.net/templates), что "Лифт поддерживает дизайнерские шаблоны".
Как один из моих шагов в обучении. Ликвидация способов делать вещи. Я пытаюсь создать простую форму создания объекта: возьмите несколько параметров, используйте их как аргументы конструктора, а затем уберите объект. После некоторых исследований и экспериментов, у меня есть две проблемы:
- Кажется, существует значительная склонность к значительному переписыванию/приукрашиванию разметки шаблона в фрагментах.
- Формы, похоже, не используют допустимые или узнаваемые элементы html.
Что я основываю на этом:
Образцы/документы формы, похоже, все об особых тегах: теги. Exploring Lift предполагает, что форма должна выглядеть так: (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, не похоже, что это соответствует духу того, что ваши шаблоны выглядят как настоящий html для наших друзей-дизайнеров. Я читал где-то в другом месте (не могу найти его снова), что у нас была возможность использовать фактические теги ввода, но тогда мы не получили бы некоторые части приподнятого воображения формы или что-то вроде этого, проход был не очень понятен на том, что именно я бы упустил, и примеры не заинтересованы в написании простой 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, и он читает с терпением, но он все равно разбрасывает вашу разметку повсюду. Это, похоже, нарушает дух "дизайнерских шаблонов".
Что я хочу понять.
В течение долгого времени я строго придерживался двух правил в моей разработке webapp:
- Отсутствует разметка в "коде" (контроллеры, бизнес-модели).
- В шаблонах нет бизнес-логики.
Идиоматический лифт, кажется, полностью отвергает первое правило и полностью пропускает значение второго правила. Эти правила хорошо послужили мне, и я не готов просто следовать примерам, которые, по-видимому, нарушают их, не понимая, почему он не собирается создавать беспорядок. Я хочу понять, почему в "Lift" все в порядке, так что в фрагментах есть так много кода отображения. Я также хочу понять, почему все в порядке, что разметка в шаблонах так редко отражает результат.
Что я (думаю, я) хочу:
Я хочу, чтобы все мои разметки были очень небольшими, если таковые имеются, исключениями в моих шаблонах. Я хочу, чтобы мои фрагменты выполняли минимальное манипулирование шаблонами, обычно заменяя только текст элемента на тегах "листа" и, возможно, настраивая значения атрибутов. Я думаю, что я сделал это для достаточно сложного примера отображения, и я подозреваю, что могу использовать ту же технику для создания формы html ванили, а затем самостоятельно обрабатывать параметры. Это то, что мне нужно сделать, если я хочу, чтобы мой шаблон выглядел как форма конечного результата?
Ответы и любые другие мысли, особенно на понимание мышления Лифта относительно этого материала, будут чрезвычайно оценены.
Спасибо!
- 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 также, похоже, перетаскивает целую нагрузку разметки в фрагменты, что (я думаю) является огромным составом разметки и бизнес-логики. Это путь лифта?