Kun rakennat verkkosivustoa, luot yleensä osan lopullisesta sisällöstäsi dynaamisesti. Haluat sitten lisätä nämä tiedot lopullisille verkkosivuillesi, jotta ne voidaan näyttää selaimessa.
Voit valita kahdesta eri lähestymistavasta: upottaa sivurakenteen ohjelmaan tai yhdistää lopulliset tiedot erillisiin mallitiedostoihin.
Mallipohja mahdollistaa huolenaiheiden erottelun paremman ylläpidettävän koodikannan saamiseksi. Se myös helpottaa etupään tehtävien jakamista taustatehtäviin jakamalla ne eri tiimin jäsenille. Golla on erinomainen mallipohjatuki vakiokirjastossaan.
Mallin käytön aloittaminen Gossa
Golla on kaksi mallipakettia vakiokirjastossa: teksti/malli ja html/malli. Teksti/mallipaketti sisältää toiminnot tekstitiedostojen jäsentämiseen, kun taas html/template käsittelee HTML: ää. Käyttämällä html-/mallipohjaa olet suojattu sivustojen välisiltä komentosarjahyökkäyksiltä (XSS), koska Go välttää tietojen syöttämisen renderöinnin aikana. Tämä on toinen mallintamisen etu manuaaliseen lähestymistapaan verrattuna.
Koska mallipaketti on osa vakiokirjastoa, sinun ei tarvitse asentaa riippuvuuksia. tuo vain se:
tuonti "html/malli"
Aloita HTML-tiedoston luominen käytettäväksi mallina sovelluksellesi. Voit käyttää standardia .html laajennus tai jompikumpi .gohtml tai .tmpl, molemmat ovat myös yleisiä. Mitä tahansa laajennusta käytät, sovelluksesi toiminnot ovat samat. Jotkut tekstieditorit voivat käyttää eri syntaksin korostuksia mallien laajennuksista riippuen. Tässä perusrunko:
<!DOCTYPE html>
<html lang="fi">
<pää>
<meta charset="UTF-8">
<otsikko>Asiakirja</title>
</head>
<kehon>
</body>
</html>
Tallenna tämä tiedosto Go-ohjelmasi hakemistoon. Voit nyt alkaa työskennellä sen kanssa mallina ohjelmassasi.
Luo globaali esiintymä Sapluuna mallipaketin menetelmä. Pääset tähän malliinstanssiin ohjelmasi eri osista.
var tmplt *malli. Sapluuna
Sinun on luotava yksinkertainen palvelin mallien hahmontamiseksi ja näyttämiseksi. Näin käynnistät yksinkertaisen palvelimen Gossa käyttämällä net/http paketti:
funcrunServer() {
http. HandleFunc("/home", kahvasivu)
virhe := http. ListenAndServe("localhost:8080", nolla)
jos virhe! = nolla {
Hirsi. Fatalln("Palvelimessa on virhe:", virhe)
}
}
Soitat runServer -toimintoa päätoiminnostasi käynnistääksesi palvelimen. Palvelimella on vain yksi reitti, /home reittiä, joka näyttää sivusi. The kahvasivu parametri on käsittelijän funktion nimi, joka hahmontaa sivusi. The KuunteleJaPalvele menetelmä aloittaa palvelimen kuuntelemisen portissa 8080 päällä localhost, eli oma tietokone.
Muuttujien välittäminen malleihin
Luo globaali rakenne nimeltä Uutiset:
tyyppi Uutiset struct {
Otsikko merkkijono
Runko merkkijono
}
Käytät tätä rakennetta tietojen tallentamiseen ja siirtämiseen malliisi näytettäväksi viimeisellä sivullasi. Voit sitten käyttää tätä syntaksia mallissasi tietojen lisäämiseen:
{{ nimi }}
Missä nimi on malliin siirtämäsi muuttujan nimi. Kun teet mallin, se korvaa aaltosulkeissa olevat arvot vastaavilla Go-koodisi tiedoilla. Koska seuraava esimerkki välittää rakenteen, käytät sen kenttiä pistemerkinnällä:
<kehon>
<h1>{{ .Otsikko }}</h1>
<s> {{ .Body }} </s>
</body>
Korvaa tyhjä body-elementti mallin runkomerkinnöissä yllä olevalla koodilla.
The kahvasivu Käsittelijätoiminto varmistaa, että sivun pyyntö on GET-pyyntö. Sitten se täyttää rakenteen mallitiedoilla ennen mallin hahmontamista ja viimeisen sivun näyttämistä:
funckahvasivu(kirjoittaja http. ResponseWriter, pyydä *http. Pyyntö) {
jos pyyntö. Menetelmä == "HANKI" {
tmplt, _ = malli. ParseFiles("tutorial.html")tapahtuma := Uutiset{
Otsikko: "makeuseof.comissa on kaikki tekniikka",
Runko: "Käy MUO: ssa varten kaikki tekniikkaan liittyvä",
}err := tmplt. Suorita (kirjoittaja, tapahtuma)
jos virhe! = nolla {
palata
}
}
}
The ParseFiles menetelmä jäsentää määrittämäsi HTML-tiedoston. The tapahtuma muuttuja on alustettu rakenne. The Suorittaa menetelmä syöttää toimitetut tiedot viimeiselle sivulle mallin paikkamerkkien mukaan. Suoritus kestää a ResponseWriter ja data, tässä tapauksessa rakenne.
Tässä on tulos palvelimen käyttämisestä ja sivulla vierailemisesta:
Ohjausrakenteiden käyttäminen malleissa
Voit myös käyttää malleissasi ohjausrakenteita, kuten ehdollisia lausekkeita ja silmukoita.
Silmukan avulla voit tulostaa useita arvoja ja käyttää uudelleen samaa rakennetta jokaiselle. Käytä alue avainsana määrittää toistuvan sisällön alun ja loppu avainsana loppuun. Silmukan sisällä voit käyttää {{.}} syntaksi nykyisen arvon lisäämiseksi:
{{alue .}}
- {{.}}
{{end}}
Sitten välität sen tietorakenteen nimen, jonka läpi haluat silmukan suorittaa parametrina Execute-menetelmälle:
makeUseOfCategories := []merkkijono{"Technology Explained", "Programming", "Linux",
"Android", "iOS", "Paljon muuta..."}err := tmplt. Suorita (kirjoittaja, makeUseOfCategories)
jos virhe! = nolla {
palata
}
The makeUseOfCategories muuttuja on osa merkkijonoja, jotka välitetään tietoparametrina. Tässä on siivua kiertämisen tulos:
Voit käyttää ehtolauseketta malleissasi loogisen muuttujan arvon testaamiseen. Luo rakenne loogisilla kentillä seuraavasti:
tyyppi TrueFalser struct {
On totta bool
On False bool
IsDefault bool
}
Jos haluat käyttää ehdollista, sisällytä jos avainsana kaksoissulkeissa ennen testattavan muuttujan nimeä. Lopeta ehdollinen lohko merkillä loppu avainsana aaltosulkeissa:
{{if .IsTrue}}
<s>Arvioi tosi ja tulostaa</s>
{{end}}{{if .IsDefault}}
<s>Arvioi väärin ja voitti't lähtö</s>
{{end}}
{{if .IsFalse}}
<s>Arvioi väärin ja voitti't lähtö</s>
{{end}}
Rakenteen alustaminen Go-ohjelmassa asettaa arvot oletusarvoisesti epätosi-arvoiksi, joten jos et alusta kenttää, se arvioi arvoksi false. Kun rakenne alustetaan ja muuttuja siirretään tietona malliin, vain kentät, jotka arvioivat todeksi, aiheuttavat tulosteen ilmestymisen.
valinta := TrueFalser {
On totta: totta,
On False: väärä,
}
err := tmplt. Suorita (kirjoittaja, valinta)
Lopullinen tulos sisältää vain yhden kappaleen, koska vain isTrue-kenttä arvioi tosi:
Sinun ei tarvitse käyttää malleja taustasovelluksissasi
Malli ei ole vaatimus Go-sovelluksille. Voit käyttää muita lähestymistapoja, kuten sivurakenteen upottamista ohjelmaan, sen logiikan ja muun toiminnan ohella.
Teet kuitenkin lopulta enemmän työtä itsellesi. Go-malli auttaa estämään XSS-hyökkäykset ja helpottaa sivun rakennetta koskevan työn erottamista taustalogiikasta.