En introduksjon til Haml og Sinatra

To ganger i måneden besøker vi noen av våre leseres favorittinnlegg fra hele Nettuts + historien. Denne opplæringen ble først publisert i oktober 2010.

Denne opplæringen vil introdusere Haml og Sinatra. Haml er et oppslagsspråk som produserer ren, godt strukturert HTML. Sinatra er et enkelt, men kraftig Ruby-rammeverk for å lage nettsteder eller webtjenester. De to jobber veldig godt sammen og gir et kraftig verktøy for rask og enkel webutvikling. Jeg finner dem ideelle for prototyping.

Ved slutten av denne opplæringen har du opprettet et nettsted med to sider ved hjelp av Sinatra og Haml. Underveis lærer du hvordan Sinatra applikasjoner er strukturert, og blir introdusert til Haml. Du vil også lære å bruke en layoutfil for å redusere mengden duplisert kode og gi konsistens mellom sidene.


Trinn 1: Installer Ruby og edelstener

Du kan hoppe over denne delen hvis du allerede har Ruby installert og jobber med systemet.

Vi må installere Ruby-språket og Sinatra og Haml gems for å komme i gang.

Metoden for å gjøre dette vil variere avhengig av operativsystemet. Jeg liker å bruke Ruby Version Manager (RVM) til å administrere Ruby på OS X og Linux. (Windows-brukere vil kanskje se Pik som et alternativ til RVM.)

Installer RVM for å administrere vårt Ruby miljø

For de av dere som ikke har Ruby installert, last ned og installer RVM.

Følg instruksjonene på RVM Installasjonssiden, åpne en terminal og skriv inn følgende:

 bash <<( curl http://rvm.beginrescueend.com/releases/rvm-install-head ) 

Dette vil laste ned og installere RVM. Vi må legge til en linje til slutten av vår .bashrc fil. De av dere som bruker et alternativ til skall til Bash, må endre den aktuelle profilen. Se RVM installasjonssiden for flere detaljer.

Ønsker å lære mer om å jobbe med RVM?

 echo '[[-s "$ HOME / .rvm / scripts / rvm"]] && kilde "$ HOME / .rvm / scripts / rvm" # Dette laster RVM inn i en shell-sesjon.' >> ~ / .bashrc 

Lukk og åpne på nytt ditt skall, og du bør være god å gå!

Installer avhengigheter og Ruby Language

Skriv 'rvm notater'for å sjekke ut eventuelle avhengigheter du måtte installere for operativsystemet. Det finnes flere forskjellige versjoner av Ruby som RVM kan klare. Vi bruker standardversjonen MRI. Derfor, i produksjonen av rvm notater se etter delen som sier 'For MR og REE? '. Kopier og lim inn kommandoen som er oppgitt for 'rubin'.

For eksempel, på en ny installasjon av Ubuntu, fikk jeg følgende utdata og trengte å installere avhengighetene som ble oppført ved å bruke evne kommando gitt i utgangen. Se skjermbilde nedenfor.

Med den vanskelige biten er det enkelt å installere og bruke forskjellige Ruby-versjoner og perler. Installer versjon 1.9.2 av Ruby ved å skrive inn følgende:

 rvm installere 1.9.2 

RVM skal nå laste ned og installere Ruby versjon 1.9.2.

Det siste stadiet er å instalere Sinatra og Haml edelstener. Type:

 perle installere sinatra 

Du bør se følgende utgang i terminalen:

 Installert suksessfullt rack-1.2.1 Installert sinatra-1.0 2 gems installert Installert ri-dokumentasjon for rack-1.2.1? Installere ri dokumentasjon for sinatra-1.0? Installere RDoc-dokumentasjon for rack-1.2.1? Installere RDoc-dokumentasjon for sinatra-1.0? 

Skriv nå perle installere haml å installere Haml-perlen på systemet på samme måte.


Trinn 2: Opprett Sinatra-programmet

Helt nytt til Sinatra? Ta vårt gratis kurs!

For å begynne å lage Sinatra-programmet, opprett en mappe som inneholder en Ruby-fil for programkoden. I din terminal, skriv inn:

 mkdir sinatra-app cd sinatra-app berøre nettsiden.rb 

Åpne den nyopprettede 'website.rb'-filen i tekstredigeringsprogrammet og skriv inn følgende:

 krever 'rubygems' krever 'sinatra' get '/' do "Dette er Sinatra" slutt 

Dette er et grunnleggende Sinatra-program. De to første linjene bringer inn 'RubyGems'og'sinatra'biblioteker for å gjøre det harde arbeidet.

Neste avsnitt forteller Sinatra hvordan du svarer på en '' be om. Spesielt forteller det det som skal gjøres når roten url (den '/' sti) er forespurt. I dette eksemplet returnerer Sinatra bare strengen "Dette er Sinatra". Dette er hva som vil vises i nettleseren når roadsadressen til applikasjonen blir bedt om.

For å se det i aksjon, gå tilbake til din terminal og kjør Sinatra-programmet ved å bruke følgende kommando:

 ruby website.rb 

Du må starte denne på nytt website.rb filen hver gang du endrer den. Derfor er det en god ide å holde et eget skall løp i eget vindu eller flipp for å starte og stoppe det.

Du bør få svaret:

 == Sinatra / 1.0 har tatt scenen på 4567 for utvikling med backup fra WEBrick [2010-09-27 09:45:37] INFO WEBrick 1.3.1 [2010-09-27 09:45:37] INFO rubin 1.8. 7 (2010-08-16) [i686-darwin10.4.0] [2010-09-27 09:45:38] INFO WEBrick :: HTTPServer # start: pid = 14135 port = 4567 

Dette forteller oss at en webserver (kalt WEBrick) har startet, og serverer nå søknaden din på port 4567.

For å se det, åpne nettleseren din og gå til "localhost: 4567". Du bør se programmets utgang:

Gratulerer! Din Sinatra-applikasjon er oppe og går!

La oss begynne å se på byggesider med Haml og noen standard Sinatra-konvensjoner for spesielle filer.


Trinn 3: Introduksjon av Haml

Vi skal bygge våre sider med Haml. Det første trinnet er å fortelle vår søknad at vi skal bruke Haml-perlen.

Vi gjør dette ved å legge til med 'Haml' mot toppen av koden. Forandre din 'website.rb'fil ​​for å se ut som følgende:

 krever 'rubygems' krever 'sinatra' krever 'Haml get' / 'do "Dette er Sinatra" -end 

Din søknad vil nå vite å bruke Haml-perlen som vi installerte tidligere.

The Haml Markup Language

Haml er en enkel og ren måte å beskrive HTML på. Den kan også håndtere inline-koden, for eksempel PHP, ASP og Ruby script.

En av Hamls mål er å redusere mengden duplisering og gjentakelse som finnes i å lage websider med HTML; Et eksempel på dette er å lukke koder. Det gjør dette ved å stole på strukturen av strekkene i koden: Når du skriver i Haml, er det viktig å være i samsvar med strekkordene som de beskriver strukturen på siden.

Resultatet er oppslag som er logisk og mye lettere å lese enn HTML for alle, men de mest trivielle tilfellene.

La oss se på noen Haml-markering og vise HTML-en som produserer den.

 !!! % html% head% title Dette er tittelen i en tittel-tag i hodetiketten% body% h1 Dette er en overskrift i en h1-tag% p Dette er tekst i et avsnitt. Legg merke til hvordan vi ikke lukker taggen? indrykkene gjør det! 

'!!!"ved starten av koden forteller Haml å sende ut DOCTYPE stikkord. HTML-koder er beskrevet med en '%'tegn. Så % html outputs the stikkord, %hode skaper stikkord, % p- skaper

tag og så videre.

Innsnittene forteller Haml hvilke merker ligger innenfor andre. Så overskriften tag

produsert av "% h1'Markup er innenfor tag laget av '%kropp'markup. Følgende avsnittskode merket av '% p-'-taggen er også innenfor kroppsmerket. Etter innsnittene kan vi se at teksten ligger i avsnittet.

Derfor gir oppmerkningen ovenfor følgende HTML-utgang:

    Dette er tittelen i hodetiketten    

Dette er en overskrift i kroppsmerket

Dette er tekst i et avsnitt. Legg merke til hvordan vi ikke lukker taggen? indrykkene gjør det!

Du kan se hvor lukkekodene korresponderer med innrykket i den opprinnelige Haml-markeringen.

Legge til Haml Templates til Sinatra Application

Med den raske introduksjonen til Haml ute av veien, kan vi begynne å bruke den i vår søknad. Som standard vil Sinatra lete etter nettsidemaler i en mappe som heter 'visninger'. La oss legge til den mappen nå.

Åpne en terminal, naviger til sinatra_app mappen vi laget tidligere og skriv inn følgende:

 mkdir viser cd-visninger 

Nå er vi inne i visningsmappen, la oss lage en "index.haml'side.

 trykk på index.haml 

Åpen 'index.haml'i teksteditoren og fyll ut følgende:

 !!! % html% hode% tittelen Sin Sinatra Nettsted% kropp% h1 Velkommen% p Velkommen til min hjemmeside laget med Sinatra og HAML 

Det neste trinnet er å fortelle Sinatra å bruke denne filen til hjemmesiden. Åpne 'website.rb'fil ​​og endre koden i få '/' blokkere slik at filen nå leser:

 krever 'rubygemer' krever 'sinatra' krever 'haml' get '/' do haml: index end 

Dette instruerer applikasjonen til å sende utdataene fra Haml-filen, kalt index.haml (søkes automatisk i mappen "visninger"), når rotadressen er forespurt.

Tilbake i terminalen som kjører webserveren, skriv 'Ctrl-C'for å stoppe webserveren og ring den igjen ved hjelp av rubin kommandoen for å starte den på nytt:

 [Ctrl-C] ruby ​​website.rb 

Oppdater nettleseren din og du bør se den resulterende nettsiden.

Vise kilden til denne nettsiden viser HTML som er generert av Haml:

    Min Sinatra Nettsted   

Velkommen

Velkommen til nettstedet mitt gjort med Sinatra og HAML

Flott! Vi har nå vår nettside som arbeider ved å bruke Haml-malene i 'visnings'-katalogen.

La oss nå jobbe hjemmesiden til noe som følger en typisk struktur med et overskrift, bunntekst, innholdsområde og et sidebjelke. Vi legger også til noen grunnleggende CSS for å plassere og utforme siden. Ved å gjøre dette, ser vi hvordan du skal uttrykke

tagger i Haml og hvordan å ta med lenke til CSS-filer.

Opprett hjemmesiden

Gå tilbake til filen 'index.haml' i tekstredigeringsprogrammet og endre det slik at det ser ut som følgende:

 !!! % html% hodet% tittel Sinatra Nettsted% body #wrapper #header% h1 Sin Sinatra Nettsted% h2 Et enkelt nettsted laget med Sinatra og HAML! #content% h1 Hjemmesiden% p Velkommen til nettstedet mitt laget med Sinatra og HAML. % p Dette er hjemmesiden, og dette er litt tekst for å fylle ut hjemmesiden! #side_bar% h1 Sidefelt% p Dette er sidelinjen på nettsiden #footer% p Dette er footer.

Dette er et typisk layout med overskrift, innhold, side_bar og bunntekst div. Som du kan se,

Tagger er opprettet med # skilt. Hele siden er pakket inn i en
tag laget av '#wrapper'linje.

For å gi en HTML-kode et ID, kjedde vi bare # på slutten, så vi kunne skrive % Kroppen # my_ID å få . Klasser er merket med en prikk. Så % article.my_class ville gitt

.

Lagre filen og oppdatere den i nettleseren din. Du bør se noe slikt:

Legg til noen CSS Styling

Sinatra bruker andre spesielle katalognavn "offentlig" for å lagre eiendeler som CSS-filer og bilder. Opprett en mappe som heter «offentlig» i programmets rotmappe. Bytt til katalogen og opprett en kalt 'css' for å lagre css-filene. Fullfør ved å lage et tomt css filen i den katalogen.

Gjør dette i din terminal ved å skrive:

 mkdir offentlig cd offentlig mkdir css cd css touch styles.css

Åpne styles.css filen i editoren din og kopier og lim inn følgende i:

 #wrapper bredde: 66%; margin: auto;  #header bakgrunnsfarge: #ade;  #header> h1 font-size: 200%;  h2 skriftstørrelse: 130%; font-family: uten seriffer;  # innhold margin: 12px 0; float: venstre;  #side_bar margin: 12px 0; bredde: 30%; float: right; klar: none; background-color: #ddd;  h1 skriftstørrelse: 150%;  #footer clear: both; background-color: #ade; font-size: 75%; font-family: uten seriffer; color: # 333; border-top: solid 1px # 69a;  ol polstring-topp: 20px; background-color: #ade; display: block;  li farge: hvit; tekst-Justering: center; display: inline; polstring: 5px 10px 0 10px; margin-right: 2 piksler; bakgrunnsfarge: # 69a;  en tekst-dekorasjon: ingen; 

Jeg vil ikke gå inn i detaljene til css, som det er bare en rask og skitten måte å gjøre sideelementene mer tydelige i nettleseren.

Vi må koble til CSS-filen fra indekssiden. Jeg skal også legge til en kobling til Yahoo CSS tilbakestill for å hjelpe konsistens på tvers av nettlesere. Åpne index.haml siden redigeringsprogrammet og legg disse to linjene til %hode seksjon.

 % link (rel = "stylesheet" href = "http://yui.yahooapis.com/2.8.0r4/build/reset/reset-min.css")% link (rel = "stylesheet" href = "css / stiler Css ")

Dette illustrerer hvordan vi kan bruke parenteser i Haml for ytterligere tagattributter: rel og href i dette tilfellet.

Din siste fil skal se slik ut:

 !!! % html% hode% tittel Min Sinatra Nettsted% link (rel = "stylesheet" href = "http://yui.yahooapis.com/2.8.0r4/build/reset/reset-min.css")% link (rel = "stylesheet" href = "css / styles.css")% body #wrapper #header% h1 Min Sinatra Website% h2 Et enkelt nettsted laget med Sinatra og HAML! #content% h1 Hjemmesiden% p Velkommen til nettstedet mitt laget med Sinatra og HAML. % p Dette er hjemmesiden, og dette er litt tekst for å fylle ut hjemmesiden! #side_bar% h1 Sidefelt% p Dette er sidelinjen på nettsiden #footer% p Dette er footer.

Oppdater nettleseren din, og du bør se hjemmesiden med styling og divs posisjonert.

Vi har nå grunnleggende mal for våre nettsider som vi kan bruke til å opprette flere sider.


Trinn 4: Opprette en felles layout

Nå som vi har vårt grunnleggende sidelayout, kan vi se at mye av innholdet i vår index.html-fil kan være den samme for andre sider på nettstedet. I dette eksemplet vil vi holde topptekst, bunntekst og sidebar felles for begge sider. Vi kan bruke en oppsett fil i Sinatra for å oppnå dette.

Gå tilbake til index side i teksteditoren din; endre filnavnet ved å velge 'Lagre som' til layout.haml.

Vi vil nå redigere oppsett fil og introdusere noen templerende markup ved hjelp av '='tag i Haml.

Endre layoutfilen slik at den ser ut som:

 !!! % html% hode% tittel Min Sinatra Nettsted% link (rel = "stylesheet" href = "http://yui.yahooapis.com/2.8.0r4/build/reset/reset-min.css")% link (rel = "stylesheet" href = "css / styles.css")% body #wrapper #header% h1 Min Sinatra Website% h2 Et enkelt nettsted laget med Sinatra og HAML! #content = yield #side_bar% h1 Sidefelt% p Dette er sidelinjen på nettsiden #footer% p Dette er footer.

Nøkkelen her er "= flyte'kommando. De = skilt forteller Haml å behandle noen Ruby-kode og sette utgangen i nettleseren. Her kaller vi bare Ruby's utbytte funksjon som vil returnere innholdet på siden.

Vi kan nå redigere vår index.haml side for å ta ut all koden som er duplisert i oppsett fil. Endre det slik at det ser ut som:

 % h1 Hjemmesiden% p Velkommen til nettstedet mitt gjort med Sinatra og HAML. % p Dette er hjemmesiden, og dette er litt tekst for å fylle ut hjemmesiden!

Forfriskende nettleseren skal gi nøyaktig samme resultat som tidligere. Men denne gangen, den oppsett filen blir automatisk hentet av Sinatra og index Siden blir gjengitt som et resultat av utbytte funksjon.

Lag om siden

Å lage flere sider som bruker denne mal er nå grei. Opprett en ny fil i mappen "visninger" som heter about.haml

Din katalog og filstruktur for applikasjonen skal se slik ut:

Skriv inn følgende kode i den nye filen:

 % h1 Om% p Dette er et enkelt program ved hjelp av Sinatra og HAML.

Som du kan se, er dette en veldig enkel side med en overskrift og et stykke tekst i en avsnittetikett.

Vi har ingen måte å se siden for øyeblikket. For å gjøre det, må vi endre website.rb fil for å fortelle Sinatra å håndtere en forespørsel om "/handle om'og å returnere about.haml mal som et resultat.

Vi gjør det ved å legge til følgende linjer til website.rb fil:

 krever 'rubygems' krever 'sinatra' krever 'haml' get '/' do haml: index end get '/ om' gjør haml: om slutten

De få '/ om' blokk enkel forteller Sinatra å returnere "om" Haml mal som svar på en HTTP får for '/handle om'.

Start på nytt WEBrick webserver ved å trykke Ctrl-C i terminalen der den kjører, som vi gjorde før, og ringer ruby website.rb.

Du bør se følgende side når du navigerer til 'localhost: 4567 / om'i nettleseren din.

Å legge til flere sider vil være så rask og så enkel som det. Bare husk at du må starte på nytt WEBrick server hvis du endrer programfilen.


Trinn 5: Legge til en meny (og rydde opp)

Vi må legge til noen måte å navigere mellom sidene; så legger vi til en enkel meny i oppsettet. Åpne layout.haml fil og legg til navigasjonen div og koblingene som dette:

 !!! % html% hode% tittel Min Sinatra Nettsted% link (rel = "stylesheet" href = "http://yui.yahooapis.com/2.8.0r4/build/reset/reset-min.css")% link (rel = "stylesheet" href = "css / styles.css")% body #wrapper #header% h1 Min Sinatra Website% h2 Et enkelt nettsted laget med Sinatra og HAML! #nav% ol% a (href = "/")% li Hjem% a (href = "om")% li Om #content = yield #side_bar% h1 Sidefelt% p Dette er sidelinjen på nettsiden #footer % p Dette er bunnteksten.

Her oppretter vi en div med id av nav. Dette div inneholder en liste med anker tags til '/' og 'handle om'. Legg merke til hvordan den koblede teksten er innrykket på den følgende linjen for å omslutte den i HTML anker tag.

Oppdater nettleseren din, og du bør se en meny som lenker de to sidene:

Hvis du klikker på koblingene i navigasjonsmenyen, skal du ta deg til hver side. Du kan eksperimentere med å legge til flere sider. Husk at trinnene er som følger:

  • Legg til en ny .haml-fil i visningskatalogen.
  • Beskriv visningen ved hjelp av Haml i den filen.
  • Legg til navigasjonen til den nye siden i menydelen av layoutfilen.
  • Rediger website.rb filen for den nye ruten på samme måte som "/handle om'rute.
  • Ikke glem å starte nettsiden web.rb!

Konklusjon

Det er absolutt mye mer til både Sinatra og Haml enn vi har sett her. Sinatra er et godt valg for nettsider og webtjenester, mens en tyngre ramme som Ruby on Rails kan være overkill. Videre finner jeg enkelhet og klarhet i Haml, kompletterer Sinatra vakkert, og gir en meget produktiv utviklingsmetode.