View engine для nrails
От: Ziaw Россия  
Дата: 15.05.10 16:05
Оценка:
В связи с тем, что миграции закончены, константы понятно как делать, а последний макрос уже сделал hardcase, предлагаю обсудить нечто важное, но выходящее за роадмап.

View engine. Дефолтный aspx достаточно неуклюж. Попробую перечислить его недостатки:



У меня зреет несколько вариантов, которые я хотел бы обсудить. Для примера возьмем простейшую вьюху: http://code.google.com/p/nemerleonrails/source/browse/Demo/NRails.Demo/Views/Home/Index.aspx

Spark


Движок который я сейчас применяю в MVC, о нем я уже рассказывал здесь, особо повторяться не буду, кто желает узнать поближе — http://sparkviewengine.com/

  <content name="Title">Home Page</content>

  <h1>!{model.Message}</h1>
  <p>Taxonomies list
    <ul>
      <li each='tax in model.Taxonomies'>!{tax}</li>
    </ul>


Плюсы:

Минусы:

StringTemplate


Тут я описывать не буду особо, т.к. сам пока имею только печальный опыт попыток понять логику StringTemplate.

[StringTemplateGroup]
class Index_Home : View
{
  public title() : string {"Home Page"}

  [view] public view(model : Model) : string
  {
<#
  <h1>!{model.Message}</h1>
  <p>Taxonomies list
    <ul>
      ..$(model.Taxonomies; "\n";taxonomy)
    </ul>
#>
  }

  public taxonomy(name : string) : string {$"<li>$name</li>"}
}


Плюсы:

Минусы:



Код на Nemerle a la haml


Некий DSL на макрах, напоминающий haml. Python like indent + несколько несложных макров и код на nemerle начинает очень походить на haml. http://haml-lang.com/

[View] class Home_Index
  public title() : void
    t "Home Page" // t макрос вывода обычного текста, автоэскейпинг

  public view(model : Model) : void
    h1 model.Message
    p 
      t "Taxonomies list"
      ul
        foreach (tax in model.Taxonomies)
          li tax


Плюсы:


Недостатки:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.