!

Dette materialet blir ikke lenger vedlikeholdt. Du vil finne oppdatert materiale på siden: http://borres.hiof.no/wep/

Dokument
MVC
Børre Stenseth
Dokument >MVC

Model View Control

Hva
Model View Control
mvc

Under litt tvil kan vi kanskje betrakte vevsider som ytterligere en realisering av det gamle prinsippet for tredeling av logikk som er beskrevet som Model View Controller. Der altså strukturen (HTML) representerer "Model", CSS beskriver "View" og JavaScript implementerer "Control".

MVC er en måte å tenke på som har vært med helt fra starten av programmering av interaktive løsninger og ble vel først realisert i Smalltalk. En landsmann, Trygve Reenskaug [1] , har fått æren av å introdusere begrepet.

I nyere litteratur finner vi ofte begrepet SoC(Separation of Consern) for å beskrive denne tredelingen. Begrepet er ganske bra siden det understreker det viktige faktum at vi som utviklere kan profitere rent utviklingsmessig og mentalt på å skille mellom disse tre egenskapene ved et dokument, og fokusere dem hver for seg. Gevinsten ligger i utvikling, men i enda større grad i vedlikehold og gjenbruk.

Mye av materialet på dette vevstedet er fokusert på å få til dette samspillet. Nedenfor finner du en kort introduksjon til koplingene mellom de tre komponentene og hvor de er nærmere omtalt.

Struktur - Utseende

Utviklingen i HTML og XHTML fram til HTML5 (XHTML5) har hele tiden gått i retning av å skille struktur og utseende. Det har blitt stadig større begrensninger på hva vi har fått lov til å skrive av attributter i elementer som angir hvordan elementet skal se ut.

<p color="blue"> ikke lovlig
<p style="color:blue"> lovlig
<p class="markedparagraph">
og
.markedparagraph{color:blue}
anbefalt

Den anbefalte løsningen baserer seg altså på bruk av CSS (Cascading Style Sheets) og gir oss stor handlefrihet til å endre utseende, "stil", ved bare å endre i stilsettet. Et kjernespørsmål blir da hvor stor handlefrihet vi har til å gjøre koplinger mellom strukturen og stilsettet. Nøkkelen ligger i det som vanligvis kalle CSS-selectors, altså hvordan vi kan kople en stilregel til ett eller en gruppe elementer. Dette er nærmere omtalt i modulen CSS

Struktur - Dynamikk

Når nettleseren laster opp en side, parses siden og det bygges opp en struktur av siden i hukommelsen. Vi omtaler ofte denne strukture som DOM (Document Object Model), og modellen vi har i hodet er en trestruktur. Javascript gir oss mulighet for å lese og endre denne strukturen dynamisk. Vi kan om vi vil ommøblere siden fullstendig, hente inn nye elementer (AJAX) og skjule elementer. For at dette skal være forutsigbart må vi stole på at de ulike nettleserne bygger likedanne strukturer og at de tolker våre Javascript-instruksjoner likt. Dette er desverre ikke alltid tilfelle, og det er her de store utfordringene ligger. Det er i praksis ikke mulig å vedlikeholde noen komplett liste over vilke spesialiteter og avvik fra ønskede standardløsninger de ulike versjonene av de ulike nettleserne har.

Modulen Omgivelsene beskriver de omgivelsene vi har å forholde oss til når vi programmerer og modulen DOM demonstrerer noen helt grunnleggende programmeringsøvelser mot DOM (document-objektet). Modulen DOM og SAX drøfter parsing og det grunnleggende DOM-begrepet som en XML-struktur.

Dynamikk - Utseende

Vi kan programmere utseende ved hjelp av Javascript. Det vil si at vi kan manipulere style-attributten til et element og vi kan manipulere class-attributten. I tillegg kan vi skru av og på stilsett. I HTML5 kan vi endog endre egenskapene til en stilregel i et stilsett. Modulen Javascript og CSS og Picasso viser noen eksempler.

Referanser
  1. The Model-View-Controller Trygve Reenskaug 2003 University of Oslo heim.ifi.uio.no/~trygver/2003/javazone-jaoo/MVC_pattern.pdf 14-03-2010
Vedlikehold
Børre Stenseth, mai 2011
( Velkommen ) Dokument >MVC ( Markup )