Express HTML - Pug Templating
Nå skal vi se på en Templating Engine som heter pug - hva er en Templating Engine spør du? Jo - det er rett å slett noe som tar imot en form for innhold, og genererer en mer komplisert versjon. Den kan også ta imot verdier, som er grunnen til at en templating engine er nyttig.
Formålet med det er å konvertere noe vanskelig, tidkrevende, eller begge deler - til noe enklere og mer programmeringsvennlig.
Installasjon av pugjs
For å installere pugjs, må vi gå inn i terminalen i vårt node prosjekt og skrive følgende kommando:
Verre er det faktisk ikke!
For å ta i bruk pug, må vi legge til en linje under vår “app” funksjon i node appen vår, hvor vi definerer hvilken view engine
vi ønsker å bruke. Det gjør vi ved å legge inn følgende linje:
Eksempel med og uten pug
Til vanlig kan vi bruke response.send(<innhold>)
for å sende tilbake innhold når en forsøker å nå en ressurs på vår Express app. Det vi legger i <innhold>
, vil bli sendt til nettleseren. Ønsker vi derfor å sende ut en HTML side, må vi derfor sende hele HTML koden, slik som dette:
app.js | |
---|---|
Tungvint og rotete, ikke sant?
Med pug, kan vi heller bruke en .pug
fil til å definere hvordan vår HTML side skal se ut, som gjør det mye lettere å håndtere hvordan man sender en fin side tilbake til leseren. Filene må ligge i en mappe som heter views
i samme prosjektmappe.
Hvis vi lager en fil i views
mappen som heter index.pug
, (filbane: views/index.pug
) - så kan vi skrive inn syntaksen pug tar. Merk at du KAN bruke vanlig HTML kode i en .pug
fil.
For å tegne denne i Express, bruker vi response.render('index.pug', {data})
istedet. (, {data})
Er valgfritt å denne kommer vi tilbake til!
Resultatet? Helt likt som det over!
Legge til style.css
I tradisjonell HTML, så bruker vi en <link>
tag til å importere CSS kode. Det gjør vi ikke i Pug. I stedet legger vi til hele style.css
filen inn i en og en fil ved å bruke include
funksjonen.
Hvis vi har en views/style.css
, som bruker standard css kode, så kan vi importere denne i vår index.pug
slik:
Sende variabler til Pug
Nå kommer vi tilbake til (, {data})
- det kule med pug er at vi kan sende data til våre .pug
filer fra NodeJS, som for eksempel kan være hentet fra en Cookie. Vi skal komme tilbake til cookies senere. Pug tar imot vanlig Objekt, eller JSON data.
app.js | |
---|---|
views/index.pug | |
---|---|
Class og ID
Til vanlig i HTML bruker vi class=""
og id=""
mye i våre tagger for å kunne selektere elementer i CSS, f.eks. <h1 class="tittel">Min Tittel</h1>
får CSS selektoren .tittel {<css her>}
. I pug gjøres dette før du legger til innholdet:
views/index.pug | |
---|---|
Attributter i Pug
Attributter, eller nøkler og verdier i elementer: <a nøkkel="verdi" nøkkel2="verdi2">
, legges til i paranteser. For eksempel en lenke:
Du kan også gjøre det som vanlig HTML, ofte er det enklere når vi skal ha ting på samme linje:
views/index.pug | |
---|---|
Layouts
En enda kulere ting, er at pug kan bygge på andre pugger. Det betyr at vi kan ha en pug som er mal for nettsiden, og en pug som er bare innholdet. Lettest å se med eksempel:
views/layout.pug | |
---|---|
views/index.pug | |
---|---|
I app.js er det fremdeles gode gamle:
Det finnes mye mer, Google er kongen!
Dette er bare et lite fnugg av hva som er mulig med Pug. Du kan gjøre loops (Vis alle søkeresultater for …), gjøre IF statements (Hvis loggetinn = sant, hvis X).
Dette skal legges inn på siden senere, for nå må du google!
Les mer
Getting Started – Pug
Jinja — Jinja Documentation (3.1.x)