Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Jaký pohled si vybrat?

18.07 - 10. ledna 2009 | Webdesign

ASP.NET MVC je velice modulární, jeho největší devízou je, že skoro vše lze nahradit něčím jiným. Nejinak je tomu i u ViewEnginu (šablonovací systém). Dokonce můžete v jedné aplikaci používat několik šablonovacích systémů vedle sebe. A to už se vyplatí!

Jaký je výběr?

Existuje spousta známých i neznámých šablonovacích systémů. Najznámější jsou asi, počkejte si na to, PHP/ASP. Ha! Ano, PHPASP nejsou nic jinýho než šablonovací systémy. To že v nich někdo dokáže psát celé aplikace – klobouk dolu.

Šablonovací systém najdete téměř v každém oblíbeném webovém frameworku. V ASP.NET MVC mu většinou říkáme ASPX nebo WebForms view engine. To je ten, který se používá v základu. Narozdíl od ASP můžete v ASPX šablonách používat i serverové značky. Toho lze využít pro tvorbu Master pages a Content pages, nebo pro snadnou lokalizaci za pomocí asp:Localize. :) V takové šabloně můžete navíc použít jakýkoli dotnetí jazyk pro logiku pohledu. Následuje ukázka pohledu s jazykem C#:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Test view page</title>
</head>
<body>
  <h1>Test view page</h1>

  <ul>
    <% foreach (var company in Model.Companies) { %>
    <li><%= company.Name %></li>
    <% } %>
  </ul>

  <% using(Html.BeginForm("create", "company", FormMethod.Post) { %>
   <fieldset>
     <legend>Create new company</legend>
     <label for="companyName">Name:</label>
     <%= Html.TextBox("companyName") %>
     <input type="submit" value="Create company" />
   </fieldset>
  <% } %>
</body>
</html>

Stejná ukázka za použití Visual Basicu:

<%@ Page Language="VB"  Inherits="System.Web.Mvc.ViewPage" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Test view page</title>
</head>
<body>
  <h1>Test view page</h1>

  <ul>
    <% For Each company In Model.Companies %>
    <li><%= company.Name %></li>
    <% Next %>
  </ul>

  <% Using Html.BeginForm("create", "company", FormMethod.Post) %>
   <fieldset>
     <legend>Create new company</legend>
     <label for="companyName">Name:</label>
     <%= Html.TextBox("companyName") %>
     <input type="submit" value="Create company" />
   </fieldset>
  <% End Using %>
</body>
</html>

Osobně v pohledech upřednostňuju Visual Basic – je to díky jeho ukecanosti. Ano, i ta se někdy může hodit. V pohledech je pak lépe vidět, kde začíná a končí for cyklus nebo podmíněný blok. Nejspíš lze stejného efektu dosáhnout i za použití IronRuby. Ale to zjistím asi velice brzy. :)

Když už jsme u toho Ruby, potažmo u Railsů, nesmím zapomenout zmínit Haml. Kód v něm může vypadat celkem obskurně, ale má přísnou logiku a zachovává čistou strukturu pohledu.

%html{:xmlns => 'http://www.w3.org/1999/xhtml'}
  %head
    %title Test view page
  %body
    %h1 Test view page
    %ul
      -model.companies.each do |company|
        %li= company.name
    %form{:action => url.action({:action => 'Create'}), :method => 'post'}
      %fieldset
        %legend Create new company
        %label{:for => 'companyName'} Name:
        =html.text_box('companyName')
        %input{:type => 'submit', :value => 'Create company'}

Do ASP.NET MVC lze přidat jeho port do dotnetu: NHaml. Pro logiku pohledu lze použít jazyky C#, IronRuby a Boo.

Obecným šablonovacím jazykem je Velocity, které si našlo cestu například do MonoRailu v podobě NVelocity. Samozřejmě je ho možné používat i v ASP.NET MVC.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Test view page</title>
</head>
<body>
  <h1>Test view page</h1>

  <ul>
#foreach($company in $model.Companies)
    <li>$company.Name</li>
#end
  </ul>

  <form action="$url.Action('create')" method="POST">
    <fieldset>
      <legend>Create new company</legend>
      <label for="companyName">Name:</label>
      $html.TextBox('companyName')
      <input type="submit" value="Create company" />
    </fieldset>
  </form>
</body>
</html>

Na půdě MonoRailu vznikl i další šablonovací systém postavený nad Boo s poetickým názvem Brail. V šablonách se může používat i rozšířená syntaxe Boo, která není závislá na odsazování a používá end literály pro definici bloků.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Test view page</title>
</head>
<body>
  <h1>Test view page</h1>

  <ul>
    <?brail for company in model.Companies: ?>
    <li>${company.Name}</li>
    <?brail end ?>
  </ul>

  <?brail using Html.BeginForm('create', 'company', FormMethod.Post): ?>
    <fieldset>
      <legend>Create new company</legend>
      <label for="companyName">Name:</label>
      ${Html.TextBox('companyName')}
      <input type="submit" value="Create company" />
    </fieldset>
  <?brail end ?>
</body>
</html>

Samozřejmě můžete místo <?brail ?> použít zkrácený zápis <% %>, to už je jen na vás, jestli se vám víc líbí PHP nebo ASP styl…

A pomalu se blížíme k poslednímu zajímavému šablonovacímu systému. A tím je Spark. Spark si klade za cíl, být co nejblíže kodérovi a jeho syntaxe je založená primárně na XHTML. Pro logiku pohledu využíváte rozšířených značek a atributů, které jsou překládány do vámi zvoleného jazyka. Zvolit si můžete tradičně mezi C#, IronRuby a IronPython.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Test view page</title>
</head>
<body>
  <h1>Test view page</h1>

  <ul>
    <li each="company in model.Companies">${company.name}</li>
  </ul>

  <form action="${url.action('create')}" method="POST">
    <fieldset>
      <legend>Create new company</legend>
      <label for="companyName">Name:</label>
      ${html.text_box('companyName')}
      <input type="submit" value="Create company" />
    </fieldset>
  </form>
</body>
</html>

Závěr

Když se podíváte na výše uvedené ukázky, zjistíte, že mají mnohé společné. Na vás je si vybrat. Každý z šablonovacích systémů má svá specifika a například Sparku bych se chtěl podrobněji věnovat v některém z následujících spo­tů.

Pokud se rozhodnete některý z view enginů použít, zkuste to přes projekt MVC Contrib.

Díky možnostem otevřené architektury ASP.NET MVC a možnosti zvolit si k práci jazyk, který vám nejvíce vyhovuje, můžete docílit nejen úspěchu u žen, ale i dle vašich preferencí! No řekněte, kdo z vás to má?

V ukázkách NHamlu a Sparku jsem zvolil integraci s jazykem IronRuby.

Dynamic Silverlight

11.48 - 15. března 2008 | Webdesign

Jednou z věcí, na kterou se dlouho těším, je podpora dynamických jazyků v Silverlightu 2+. Umožňuje to nový stack v .net runtime DLR, nad kterým jsou implementovány jazyky IronPython, IronRuby, JScript.net a budoucí verze Visual Basicu označovaná jako VBx.

Dynamic Silverlight – jak se rozšíření Silverlightu 2.0 pro dynamické jazyky nazývá – byl představen poslední den konference MIX08. Zájemcům doporučuju shlédnout záznam přednášky Johna Lama. No a právě včera byly zprovozněny nové stránky tohoto zajímavého projektu, kde si můžete stáhnout SDK s potřebnými knihovnami. Tak s chutí do hraní! :)

Tagy: Silverlight, IronPython, IronRuby

IronPython Studio

08.31 - 26. prosince 2007 | ASP.NET 2.0

S tím, jak byl uvolněn Visual Studio Shell, začínají se objevovat zajímavé aplikace na něm postavené. Jednou z nich je IronPython Studio.

Tato implementace je postavená na jednom ze samplů VS SDK, jímž je integrace IronPythonu do VS. Co všechno to umí? Namátkou:

  • Intellisense
  • Zvýrazňování syntaxe
  • Debugování
  • Předdefinované šablony projektů
  • Code snippets
  • Python konzole přímo ve VS

Celý projekt je i se zdrojovými kódy a může sloužit jako inspirace pro integraci dalších jazyků.

Kecálek ve Visual Studiu

07.18 - 26. července 2007 | Webdesign

Leopold by možná řekl: „Člověče, to je dobrý, tohleto! To vypadá jako, že pracuju, ikdyž ne. To je dobrý :).“ Bohužel už není mezi námi, takže se to asi nedovíme. Nebojte, nenašli ho udušeného počítačovou myší, to jen přesedlal z Visual Studia na linux, a kdo ví, v čem píše teď :D.

A co že by se mu tak líbilo? Hledajíce PyTel na zajíce, tedy vlastně, kterak zapnout podporu IronPythonu ve Visual Studiu (dále jen VS), jsem narazil na nutnost stáhnout si Visual Studio SDK, kde je jedním z ukázkových balíčku (čtyři projekty) právě integrace IronPythonu do VS. Ale to jen tak na okraj. Hlavní důvod, proč toto pišu je, že jsem v souvislosti s VS SDK narazil na velice zajímavý projekt s názvem VSMessenger.

Název samotný může ledasco napovědět. Vězte tedy, že se jedná o integrovaný kecálek (IM klient) přímo do prostředí VS. Tady je ukázkové video, že nekecám. Na výběr máme dokonce dva providery. Tím prvním je samozřejmě Windows Live Messenger, u kterého si můžete na speciálním toolbaru držet informaci o stavu vybraných kontaktů. Po kliknutí na jméno se vám ale otevře chatovací okno WLM. Druhým, pro mne o dosti zajímavějším, providerem je Jabber (chcete-li XMPP) provider. Ten je do VS integrován kompletně i s chatovacím ok­nem.