Ramverk

(Laravel)

Dagens föreläsning(ar)

Genomgång av vad ramverk är för något generellt och deras relation till bibliotek. Börja utforska Laravel tillsammans för att lära oss hur ett MVC-ramverk fungerar och kan användas.

Innehåll

  • Lite historik
  • Vad är ramverk?
  • Vad är MVC? (igen)
  • Vad är Laravel?
  • Hur jobbar jag i Laravel?
  • Övningsuppgifter!

Historik

Ramverk har såklart funnits väldigt länge men ramverksutveckling blev populärt först ca 2005-2007 när Ruby On Rails (RoR) släpptes.

Innan RoR så fanns det ingen konsensus runt hur ett ramverk skulle vara utformat men efter att RoR släpptes så var vägen framåt på webben spikad.

I princip alla stora populära ramverk som finns på webben idag följer någon variant av MVC och innehåller komponenter för routing, ORM, migreringar, autentisering osv.

Vad är ett ramverk?

Till skillnad från ett kodbibliotek som oftast löser en eller några få specifika uppgifter så är ett ramverk ett större koncept. Det innehåller inte bara en mängd olika funktionaliteter utan förespråkar oftast ett visst sätt att jobba.

Tanken är att använda ramverket som en helhetslösning för dina problem och sedan bygga din affärslogik ovanpå. Eftersom ramverket oftast innehåller smidiga lösningar för grundläggande CRUD och dylikt så är tanken att du snabbt skall kunna jobba med att lösa din applikations specifika problem.

MVC (Model View Controller)

Som allt annat som används på webben så är MVC lastgammalt. Konceptet "uppfanns" 1976 och introducerades i ett programmeringsspråk som heter Smalltalk.

Det var dock först 2005 som MVC som utvecklingsmetod exploderade i popularitet som sedan ledde till den utvecklingstrend som vi har på webben idag.

Vad innebär då Model View Controller?

MVC (Model View Controller)

MVC är ett sätt att tänka om och strukturera sin applikation. I "traditionell" utveckling så finns ingen självklar uppdelning mellan en applikations olika delar medan MVC försöker införa en strikt separation mellan affärslogik/resurser (Model), presentation (View) och request/response-hantering (Controller).

Denna uppdelning är tänkt att dels underlätta beslut om var kod skall ligga men även felsökning.

Om det tex är något fel med hur en lista ser ut i din frontend så är det ett View-problem.

Model

Modellerna skall vara applikationens kärna. När vi jobbar med REST så är modell och resurs ofta synonymer. Modellerna är då representationer av entiteter (ofta tabeller i din databas) och innehåller logik för hur de kan manipuleras.

I Laravel som vi skall titta på idag så kopplas modellerna direkt mot databastabeller för att underlätta arbetet med att lägga in och manipulera data i databasen.

View

Applikationens presentationslager. Principen är att dina vyer i princip inte skall innehålla någon logik och om de behöver innehålla logik så får det bara vara vad som kallas för "vylogik".

Vylogik innebär i korthet presentationsbeslut. Exempel på detta kan vara att visa ett felmeddelande vid en misslyckad inloggning.

Idag så är vyerna ofta helt och hållet javascriptdrivna vilket innebär att de är ett helt separat lager i applikationen.

Controller

"Limmet". Controllerns roll är att ta emot en förfrågan, avgöra vad som behöver göras, och sedan anropa lämpliga modeller (om data behöver manipuleras) och/eller rendera vyer.

Din controller gör dock inte arbetet själv utan anropar bara dessa andra delar och skall vara lyckligt ovetande om vad som händer bakom kulisserna.

En bra måttstock är att dina controllers skall innehålla mindre kod än vad dina modeller gör.

Laravel

Utvecklades och släpptes i sin första version år 2011. Utvecklaren bakom heter Taylor Otwell och även om andra varit engagerade i projektet så har Laravel överlag varit en enmansshow.

Trots detta så har projektet hållt en hög utvecklingstakt sedan det släpptes och har snabbt stigit till det dominerande ramverket inom sin nisch.

Laravels nisch är "enkel" och snabb utveckling där prioriteten ligger vid att göra det smidigt för utvecklaren.

Laravel (forts)

Detta är en kontrast mot tex Symfony (som Laravel är baserat på) vars fokus är att tillhandahålla en bred standardfunktionalitet men med ganska lite fokus på att göra utvecklingsprocessen så himla mycket smidigare.

Detta smidighetsfokus har varit en stor bidragande faktor till Laravels popularitet.

Hur jobbar jag i Laravel?

Vi börjar med att installera det!

composer global require "laravel/installer"

Sedan bygger vi vår första applikation!

laravel new example

Om det inte fungerar...

composer create-project --prefer-dist laravel/laravel example

Nu då?

Sätt upp en virtual host som pekar till public-mappen i Laravels installationsmapp. Ni kan skriva 

php artisan serve

Men jag rekommenderar starkt att ni använder en virtual host då det gör utvecklingsprocessen smidigare.

Mappstrukturen

Övningar

Ramverk

By marcusdalgren

Ramverk

  • 312